{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据挖掘、机器学习算法实习生需求分析  \n",
    "\n",
    "  \n",
    "  接上篇文章的“实习僧网站”数据爬取，这篇文章主要对“实习僧网站”招聘数据挖掘、机器学习的实习岗位信息进行分析。数据主要来自“数据挖掘”、“机器学习”和“算法”这3个关键词下的数据。爬下来的原始数据还比较脏，本文使用pandas进行数据处理和分析，结合seaborn和pyecharts包进行数据可视化。Python运行版本为3.6.3。\n",
    "\n",
    "### 分析目标\n",
    "1. 由于小E想要找的实习公司是机器学习算法相关的工作，所以只对“数据挖掘”、“机器学习”、“算法”这三个关键字进行了爬取；\n",
    "2. 因此，分析目标就是国内公司对机器学习算法实习生的需求状况（仅基于实习僧网站），以及公司相关的分析。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import pyecharts\n",
    "plt.style.use('ggplot')\n",
    "%matplotlib inline\n",
    "\n",
    "from pylab import mpl\n",
    "mpl.rcParams['font.sans-serif'] = ['SimHei']  #解决seaborn中文字体显示问题\n",
    "plt.rc('figure', figsize=(10, 10))  #把plt默认的图片size调大一点"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1. 数据导入\n",
    "- 把通过“数据挖掘”、“机器学习”和“算法”这3个关键词爬取到的3个csv文件数据导入为pandas DataFrame，再把他们concat起来\n",
    "- 把ignore_index设置成True让其可以重新索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_dm = pd.read_csv(\"datamining.csv\")\n",
    "data_ml = pd.read_csv(\"machinelearning.csv\")\n",
    "data_al = pd.read_csv(\"mlalgorithm.csv\")\n",
    "data = pd.concat([data_dm, data_ml, data_al], ignore_index = True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2. 数据基本信息和基本处理\n",
    "- 随机抽取3个数据样本看数据是否导入正确\n",
    "- 查看数据基本信息，看数据的行列数、数据类型是否正确、是否有重复数据，以及首先对重复数据进行处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>auth_capital</th>\n",
       "      <th>city</th>\n",
       "      <th>com_class</th>\n",
       "      <th>com_fullname</th>\n",
       "      <th>com_id</th>\n",
       "      <th>com_intro</th>\n",
       "      <th>com_links</th>\n",
       "      <th>com_location</th>\n",
       "      <th>com_logo</th>\n",
       "      <th>com_name</th>\n",
       "      <th>...</th>\n",
       "      <th>job_deadline</th>\n",
       "      <th>job_detail</th>\n",
       "      <th>job_links</th>\n",
       "      <th>job_title</th>\n",
       "      <th>num_employee</th>\n",
       "      <th>released_time</th>\n",
       "      <th>tag</th>\n",
       "      <th>time_span</th>\n",
       "      <th>update_time</th>\n",
       "      <th>wage</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>注册资本：1594.3879万人民币</td>\n",
       "      <td>上海</td>\n",
       "      <td>公司类型：有限责任公司</td>\n",
       "      <td>华院数据技术（上海）有限公司</td>\n",
       "      <td>组织机构代码：73814805-2</td>\n",
       "      <td>中国最早从事大数据分析挖掘的企业，致力于打造大数据产业生态圈</td>\n",
       "      <td>https://www.shixiseng.com/com/com_qebqujwjzwqb</td>\n",
       "      <td>上海</td>\n",
       "      <td>https://sxsimg.xiaoyuanzhao.com/A6/2F/A6E5AC0C...</td>\n",
       "      <td>华院数据</td>\n",
       "      <td>...</td>\n",
       "      <td>2018-04-03</td>\n",
       "      <td>['工作职责：', '1. 研究、设计和验证基于大数据的数据挖掘解决方案', '2. 结合实...</td>\n",
       "      <td>https://www.shixiseng.com/intern/inn_wee2wpagrgzl</td>\n",
       "      <td>计算机研究员</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>18小时前</td>\n",
       "      <td>数据挖掘</td>\n",
       "      <td>6个月</td>\n",
       "      <td>2018-03-20 16:50:46</td>\n",
       "      <td>150-200/天</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>506</th>\n",
       "      <td>注册资本：500万元人民币</td>\n",
       "      <td>深圳</td>\n",
       "      <td>公司类型：有限责任公司（自然人独资）</td>\n",
       "      <td>深圳中科龙智数字技术有限公司</td>\n",
       "      <td>注册号：440301106872394</td>\n",
       "      <td>以智能产品与技术解决方案为核心业务的高新技术企业</td>\n",
       "      <td>https://www.shixiseng.com/com/com_juogmswikjc1</td>\n",
       "      <td>深圳市南山区硅谷大学城创业园A座1410</td>\n",
       "      <td>https://sxsimg.xiaoyuanzhao.com/95/85/95B6CF24...</td>\n",
       "      <td>中科龙智</td>\n",
       "      <td>...</td>\n",
       "      <td>2018-12-31</td>\n",
       "      <td>['2.负责算法的研发，改进，优化，和移植，保证算法的快速性和稳定性；']</td>\n",
       "      <td>https://www.shixiseng.com/intern/inn_1yar0kkul8pi</td>\n",
       "      <td>虚拟现实VR算法工程师（实习）</td>\n",
       "      <td>15-50人</td>\n",
       "      <td>28小时前</td>\n",
       "      <td>软件</td>\n",
       "      <td>13个月</td>\n",
       "      <td>2018-03-21 11:19:48</td>\n",
       "      <td>100-200/天</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>240</th>\n",
       "      <td>NaN</td>\n",
       "      <td>广州</td>\n",
       "      <td></td>\n",
       "      <td>广州日报数据和数字化研究院</td>\n",
       "      <td>NaN</td>\n",
       "      <td>GDI以数据挖掘、分析以及数字新闻传播和新型智库构建为主要业务</td>\n",
       "      <td>https://www.shixiseng.com/com/com_tmzfw7kqfece</td>\n",
       "      <td>广州大学城</td>\n",
       "      <td>https://sxsimg.xiaoyuanzhao.com/0C/52/0C69C292...</td>\n",
       "      <td>数据研究院</td>\n",
       "      <td>...</td>\n",
       "      <td>2018-03-30</td>\n",
       "      <td>['6、有较强抗压能力，适应高强度工作。', '4、对数据进行统计分析、图表制作及撰写分析报...</td>\n",
       "      <td>https://www.shixiseng.com/intern/inn_2l0vrgwz4col</td>\n",
       "      <td>数据分析师</td>\n",
       "      <td>15-50人</td>\n",
       "      <td>2月前</td>\n",
       "      <td>数据挖掘</td>\n",
       "      <td>3个月</td>\n",
       "      <td>2017-12-28 15:28:09</td>\n",
       "      <td>50-70/天</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3 rows × 27 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           auth_capital city           com_class    com_fullname  \\\n",
       "29   注册资本：1594.3879万人民币   上海         公司类型：有限责任公司  华院数据技术（上海）有限公司   \n",
       "506       注册资本：500万元人民币   深圳  公司类型：有限责任公司（自然人独资）  深圳中科龙智数字技术有限公司   \n",
       "240                 NaN   广州                       广州日报数据和数字化研究院   \n",
       "\n",
       "                  com_id                        com_intro  \\\n",
       "29     组织机构代码：73814805-2   中国最早从事大数据分析挖掘的企业，致力于打造大数据产业生态圈   \n",
       "506  注册号：440301106872394         以智能产品与技术解决方案为核心业务的高新技术企业   \n",
       "240                  NaN  GDI以数据挖掘、分析以及数字新闻传播和新型智库构建为主要业务   \n",
       "\n",
       "                                          com_links          com_location  \\\n",
       "29   https://www.shixiseng.com/com/com_qebqujwjzwqb                    上海   \n",
       "506  https://www.shixiseng.com/com/com_juogmswikjc1  深圳市南山区硅谷大学城创业园A座1410   \n",
       "240  https://www.shixiseng.com/com/com_tmzfw7kqfece                 广州大学城   \n",
       "\n",
       "                                              com_logo com_name    ...      \\\n",
       "29   https://sxsimg.xiaoyuanzhao.com/A6/2F/A6E5AC0C...     华院数据    ...       \n",
       "506  https://sxsimg.xiaoyuanzhao.com/95/85/95B6CF24...     中科龙智    ...       \n",
       "240  https://sxsimg.xiaoyuanzhao.com/0C/52/0C69C292...    数据研究院    ...       \n",
       "\n",
       "    job_deadline                                         job_detail  \\\n",
       "29    2018-04-03  ['工作职责：', '1. 研究、设计和验证基于大数据的数据挖掘解决方案', '2. 结合实...   \n",
       "506   2018-12-31              ['2.负责算法的研发，改进，优化，和移植，保证算法的快速性和稳定性；']   \n",
       "240   2018-03-30  ['6、有较强抗压能力，适应高强度工作。', '4、对数据进行统计分析、图表制作及撰写分析报...   \n",
       "\n",
       "                                             job_links        job_title  \\\n",
       "29   https://www.shixiseng.com/intern/inn_wee2wpagrgzl           计算机研究员   \n",
       "506  https://www.shixiseng.com/intern/inn_1yar0kkul8pi  虚拟现实VR算法工程师（实习）   \n",
       "240  https://www.shixiseng.com/intern/inn_2l0vrgwz4col            数据分析师   \n",
       "\n",
       "    num_employee released_time   tag time_span          update_time       wage  \n",
       "29       2000人以上         18小时前  数据挖掘       6个月  2018-03-20 16:50:46  150-200/天  \n",
       "506       15-50人         28小时前    软件      13个月  2018-03-21 11:19:48  100-200/天  \n",
       "240       15-50人           2月前  数据挖掘       3个月  2017-12-28 15:28:09    50-70/天  \n",
       "\n",
       "[3 rows x 27 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.sample(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "随机抽取一个数据，看看这个数据样本所有特征的数据类型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "auth_capital                                      注册资本：130.2083万人民币\n",
       "city                                                             上海\n",
       "com_class                                 公司类型：股份有限公司(台港澳与境内合资、未上市)\n",
       "com_fullname                                         纵目科技（上海）股份有限公司\n",
       "com_id                                            组织机构代码：06087276-7\n",
       "com_intro                               成为立足中国面向世界的从辅助驾驶到自动驾驶的技术引领者\n",
       "com_links            https://www.shixiseng.com/com/com_k0gejst3xf8x\n",
       "com_location                                北京市昌平区回龙观东大街腾讯总创空间B座535\n",
       "com_logo          https://sxsimg.xiaoyuanzhao.com/7B/C2/7B75BE25...\n",
       "com_name                                                       纵目科技\n",
       "com_website                               http://www.zongmutech.com\n",
       "com_welfare       ['发展潜力大', '活跃的工作环境', '团队体验', '棒棒的', '开放创新', '追...\n",
       "day_per_week                                                   4天/周\n",
       "detailed_intro    \\n纵目科技成立于2013年1月，总部位于上海浦东张江高科技园区，在北京及深圳分别设有研发分...\n",
       "est_date                                            成立日期：2013-01-10\n",
       "industry                                                       汽车电子\n",
       "job_academic                                                     硕士\n",
       "job_deadline                                             2018-04-30\n",
       "job_detail                                                      NaN\n",
       "job_links         https://www.shixiseng.com/intern/inn_44wj24z3ra6h\n",
       "job_title                                                   视觉算法工程师\n",
       "num_employee                                               150-500人\n",
       "released_time                                                   3天前\n",
       "tag                                                              算法\n",
       "time_span                                                       3个月\n",
       "update_time                                     2018-03-19 13:04:08\n",
       "wage                                                      200-400/天\n",
       "Name: 666, dtype: object"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.loc[666]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "获取数据的基本信息，发现：\n",
    "1. 一共有978条记录，27列\n",
    "2. 某些列比如说“com_id”、“detailed_intro”、“est_date”等，具有些许缺失值\n",
    "3. 所有数据都被导入成了object类型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 978 entries, 0 to 977\n",
      "Data columns (total 27 columns):\n",
      "auth_capital      906 non-null object\n",
      "city              974 non-null object\n",
      "com_class         954 non-null object\n",
      "com_fullname      974 non-null object\n",
      "com_id            906 non-null object\n",
      "com_intro         974 non-null object\n",
      "com_links         978 non-null object\n",
      "com_location      978 non-null object\n",
      "com_logo          974 non-null object\n",
      "com_name          974 non-null object\n",
      "com_website       865 non-null object\n",
      "com_welfare       978 non-null object\n",
      "day_per_week      978 non-null object\n",
      "detailed_intro    912 non-null object\n",
      "est_date          906 non-null object\n",
      "industry          960 non-null object\n",
      "job_academic      978 non-null object\n",
      "job_deadline      978 non-null object\n",
      "job_detail        681 non-null object\n",
      "job_links         978 non-null object\n",
      "job_title         978 non-null object\n",
      "num_employee      972 non-null object\n",
      "released_time     978 non-null object\n",
      "tag               978 non-null object\n",
      "time_span         978 non-null object\n",
      "update_time       978 non-null object\n",
      "wage              978 non-null object\n",
      "dtypes: object(27)\n",
      "memory usage: 206.4+ KB\n"
     ]
    }
   ],
   "source": [
    "data.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 由于数据是通过3个关键词搜索爬取的，难免会有一个职位对应多个关键词的情况，所以难免会有重复数据  \n",
    "- 这些重复数据对于我们的分析没有帮助，先drop掉，再看剩余数据情况\n",
    "- 由于“job_links”字段（工作详情链接）对数据可以起唯一标识作用，所以可以基于该字段去重\n",
    "- 发现数据剩余878行（说明刚好有100条重复数据）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(878, 27)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.drop_duplicates(subset='job_links', inplace=True)\n",
    "data.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3. 数据处理\n",
    "由上可见：\n",
    "- com_fullname、com_name、job_academic、job_links、tag不需要处理\n",
    "- “auth_capital”（注册资本）、“day_per_week”（每周工作天数）、“num_employee”（公司规模）、“time_span”（实习月数）、“wage”（每天工资）等字段，都可以处理成数值型数据\n",
    "- “est_date”（公司成立日期）、“job_deadline”（截止时间）、“released_time”（发布时间）、“update_time”（更新时间）等字段，可以处理成datetime类型数据\n",
    "- “city”（城市）、“com_class”（公司类型）、“com_intro（公司简介）”、“job_title”（职位名称）等字段可以进一步处理\n",
    "- 类似于“com_logo”（公司logo）、“industry”（行业）等字段，可以视情况处理\n",
    "- com_id、com_links、com_location、com_website、com_welfare、detailed_intro、job_detail在本次分析中用不上，不处理"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 3.1 新建data_clean数据框\n",
    "- 新建data_clean数据框，数据处理在data_clean上进行\n",
    "- data_clean用以保存处理好的数据，原数据data用以保存原始数据记录\n",
    "- 把本次分析中用不上的字段先drop掉"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_clean = data.drop(['com_id', 'com_links', 'com_location', 'com_website', \n",
    "                 'com_welfare', 'detailed_intro', 'job_detail'], axis = 1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 3.2 数值型数据处理\n",
    "包括“auth_capital”（注册资本）、“day_per_week”（每周工作天数）、“num_employee”（公司规模）、“time_span”（实习月数）、“wage”（每天工资）等字段  \n",
    "\n",
    "##### 3.2.1 “auth_capital”（注册资本）\n",
    "- 随机抽取“auth_capital”，发现该字段的格式基本为：“注册资本：（数字）万|万元（币种）”，有少许的格式为：“注册资本：（币种）（数字）万|万元”， 或者“注册资本：无”，或者该字段为缺失值\n",
    "- 币种有人民币、美元、欧元、港元（港币）等\n",
    "- 这里的处理思路是先把“注册资本：”清理掉，再把数值型数据提取出来，然后根据各币种的汇率，把注册资本转换为“万元人民币”单位"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "621           注册资本：(美元)200万元\n",
       "475            注册资本：4000万人民币\n",
       "433            注册资本：1200万香港元\n",
       "39                注册资本：250万元\n",
       "502    注册资本：6166.7208 万元 人民币\n",
       "744      注册资本：304.757300万人民币\n",
       "612             注册资本：5000 万元\n",
       "236          注册资本：4520 万元 美元\n",
       "557           注册资本：1161万元人民币\n",
       "739             注册资本：3000 万元\n",
       "628            注册资本：9449万元美元\n",
       "188          注册资本：(美元)1000万元\n",
       "83             注册资本：4000万人民币\n",
       "958             注册资本：300万人民币\n",
       "125            注册资本：5000万人民币\n",
       "817           注册资本：1500万元人民币\n",
       "474             注册资本：100万人民币\n",
       "820        注册资本：2023.06万元人民币\n",
       "920       注册资本：319.7247万元人民币\n",
       "205                      NaN\n",
       "Name: auth_capital, dtype: object"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.auth_capital.sample(20)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 先以“：”分割字符串，便可把“注册资本：”清理掉，保留数值和币种"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>959</th>\n",
       "      <td>注册资本</td>\n",
       "      <td>1000万元</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>479</th>\n",
       "      <td>注册资本</td>\n",
       "      <td>15000万元美元</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>921</th>\n",
       "      <td>注册资本</td>\n",
       "      <td>100万美元</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>151</th>\n",
       "      <td>注册资本</td>\n",
       "      <td>217128万元人民币</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>307</th>\n",
       "      <td>注册资本</td>\n",
       "      <td>1万元人民币</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        0            1\n",
       "959  注册资本       1000万元\n",
       "479  注册资本    15000万元美元\n",
       "921  注册资本       100万美元\n",
       "151  注册资本  217128万元人民币\n",
       "307  注册资本       1万元人民币"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "auth_capital = data['auth_capital'].str.split('：', expand = True)\n",
    "auth_capital.sample(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 接着把数字提取出来， 转换为float型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>num</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>108</th>\n",
       "      <td>注册资本</td>\n",
       "      <td>100万人民币</td>\n",
       "      <td>100.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>703</th>\n",
       "      <td>注册资本</td>\n",
       "      <td>4000万元人民币</td>\n",
       "      <td>4000.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>359</th>\n",
       "      <td>注册资本</td>\n",
       "      <td>36409.6355 万元 人民币</td>\n",
       "      <td>36409.6355</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>464</th>\n",
       "      <td>注册资本</td>\n",
       "      <td>22.3464万元人民币</td>\n",
       "      <td>22.3464</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>587</th>\n",
       "      <td>注册资本</td>\n",
       "      <td>5400万人民币</td>\n",
       "      <td>5400.0000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        0                  1         num\n",
       "108  注册资本            100万人民币    100.0000\n",
       "703  注册资本          4000万元人民币   4000.0000\n",
       "359  注册资本  36409.6355 万元 人民币  36409.6355\n",
       "464  注册资本       22.3464万元人民币     22.3464\n",
       "587  注册资本           5400万人民币   5400.0000"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "auth_capital['num'] = auth_capital[1].str.extract('([0-9.]+)', expand=False).astype('float')\n",
    "auth_capital.sample(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 币种的描述比较乱，比如同是人民币，描述有“万人民币”、“万元人民币”、“万人民币元”、“万元 人民币”等\n",
    "- 先看看币种的描述都有哪些（以“万”字分割字符串，便可把数值和币种分开来）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['美元', '人民币', '元美元', None, '元人民币', '人民币元', '元', '元 人民币', '', '元 美元',\n",
       "       '元港元（港币）', '港币', '香港元', '欧元', '元 港元（港币）'], dtype=object)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "auth_capital[1].str.split('万', expand = True)[1].unique()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 币种的描述有多种， 我们可以根据不同币种，在数值上乘以相应的汇率，转换为“万元人民币”单位\n",
    "- 为了过程更好理解，可以先新建一个“ex_rate”（汇率）列，保存对应的汇率，由于数据量不大，这里用pd.Series.apply(function)（当然也可以使用pd.DataFrame.apply(function)一步到位）\n",
    "- 港币、美元、欧元兑人民币的汇率分别为 0.80、6.29、7.73"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>num</th>\n",
       "      <th>ex_rate</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>316</th>\n",
       "      <td>注册资本</td>\n",
       "      <td>3000万元人民币</td>\n",
       "      <td>3000.0</td>\n",
       "      <td>1.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>475</th>\n",
       "      <td>注册资本</td>\n",
       "      <td>4000万人民币</td>\n",
       "      <td>4000.0</td>\n",
       "      <td>1.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>396</th>\n",
       "      <td>注册资本</td>\n",
       "      <td>1000万美元</td>\n",
       "      <td>1000.0</td>\n",
       "      <td>6.29</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>771</th>\n",
       "      <td>注册资本</td>\n",
       "      <td>4000 万元 美元</td>\n",
       "      <td>4000.0</td>\n",
       "      <td>6.29</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>694</th>\n",
       "      <td>注册资本</td>\n",
       "      <td>203000 万元</td>\n",
       "      <td>203000.0</td>\n",
       "      <td>1.00</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        0           1       num  ex_rate\n",
       "316  注册资本   3000万元人民币    3000.0     1.00\n",
       "475  注册资本    4000万人民币    4000.0     1.00\n",
       "396  注册资本     1000万美元    1000.0     6.29\n",
       "771  注册资本  4000 万元 美元    4000.0     6.29\n",
       "694  注册资本   203000 万元  203000.0     1.00"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def get_ex_rate(string):\n",
    "    if string == None:\n",
    "        return np.nan\n",
    "    if '人民币' in string:\n",
    "        return 1.00\n",
    "    elif '港' in string:\n",
    "        return 0.80\n",
    "    elif '美元' in string:\n",
    "        return 6.29\n",
    "    elif '欧元' in string:\n",
    "        return 7.73\n",
    "    elif '万' in string:\n",
    "        return 1.00\n",
    "    else:\n",
    "        return np.nan\n",
    "    \n",
    "auth_capital['ex_rate'] = auth_capital[1].apply(get_ex_rate)\n",
    "auth_capital.sample(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 由'num'和'ex_rate'相乘便是转换为“万元人民币”的注册资本字段\n",
    "- 把干净的数据保存进data_clean中，方便之后分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    235875.0000\n",
       "1     27570.9972\n",
       "2       314.5000\n",
       "3     28430.8000\n",
       "4     28430.8000\n",
       "Name: auth_capital, dtype: float64"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_clean['auth_capital'] = auth_capital['num'] * auth_capital['ex_rate']\n",
    "data_clean['auth_capital'].head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 3.2.2 “day_per_week”（每周工作天数）\n",
    "由下可见：\n",
    "- “day_per_week”字段没有缺失值，并且取值在“2-6天/周”之间\n",
    "- 可以采用直接赋值的方法处理该字段"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['4天/周', '5天/周', '3天/周', '2天/周', '6天/周'], dtype=object)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.day_per_week.unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_clean.loc[data['day_per_week'] == '2天/周', 'day_per_week'] = 2\n",
    "data_clean.loc[data['day_per_week'] == '3天/周', 'day_per_week'] = 3\n",
    "data_clean.loc[data['day_per_week'] == '4天/周', 'day_per_week'] = 4\n",
    "data_clean.loc[data['day_per_week'] == '5天/周', 'day_per_week'] = 5\n",
    "data_clean.loc[data['day_per_week'] == '6天/周', 'day_per_week'] = 6"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 3.2.3 “num_employee”（公司规模）\n",
    "- 同样，由于“num_employee”字段取值在['2000人以上', '500-2000人', nan, '50-150人', '15-50人', '150-500人', '少于15人', '5000人以上']，可以采用跟“day_per_week”字段一样的处理方法\n",
    "- '少于15人'、'15-50人'、'50-150人'都记为'小型企业','150-500人'、'500-2000人'记为'中型企业'，'2000人以上'、'5000人以上'记为大型企业"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['2000人以上', '500-2000人', nan, '50-150人', '15-50人', '150-500人',\n",
       "       '少于15人', '5000人以上'], dtype=object)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.num_employee.unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_clean.loc[data['num_employee'] == '少于15人', 'num_employee'] = '小型企业'\n",
    "data_clean.loc[data['num_employee'] == '15-50人', 'num_employee'] = '小型企业'\n",
    "data_clean.loc[data['num_employee'] == '50-150人', 'num_employee'] = '小型企业'\n",
    "data_clean.loc[data['num_employee'] == '150-500人', 'num_employee'] = '中型企业'\n",
    "data_clean.loc[data['num_employee'] == '500-2000人', 'num_employee'] = '中型企业'\n",
    "data_clean.loc[data['num_employee'] == '2000人以上', 'num_employee'] = '大型企业'\n",
    "data_clean.loc[data['num_employee'] == '5000人以上', 'num_employee'] = '大型企业'\n",
    "data_clean.loc[data['num_employee'].isna(), 'num_employee'] = np.nan"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 3.2.4 “time_span”（实习月数）\n",
    "由下可知：\n",
    "- “time_span”字段没有缺失值，由“1-18个月”组成\n",
    "- 当然，你也可以通过跟上面一样的处理方式来处理，但是，这种方式对于取值多的字段来说，第一比较繁琐，第二，其实这个赋值方式本身的运行速度很慢\n",
    "- 可以考虑构造一个字典，通过pd.Series.map() 也就是映射的方式来做，方便快捷"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['3个月', '4个月', '6个月', '7个月', '5个月', '9个月', '8个月', '10个月', '12个月',\n",
       "       '13个月', '18个月', '14个月', '16个月', '11个月', '15个月', '2个月', '17个月', '1个月'], dtype=object)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.time_span.unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'1个月': 1, '2个月': 2, '3个月': 3, '4个月': 4, '5个月': 5, '6个月': 6, '7个月': 7, '8个月': 8, '9个月': 9, '10个月': 10, '11个月': 11, '12个月': 12, '13个月': 13, '14个月': 14, '15个月': 15, '16个月': 16, '17个月': 17, '18个月': 18}\n"
     ]
    }
   ],
   "source": [
    "mapping = {}\n",
    "for i in range(1,19):\n",
    "    mapping[str(i) + '个月'] = i\n",
    "print(mapping)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>auth_capital</th>\n",
       "      <th>city</th>\n",
       "      <th>com_class</th>\n",
       "      <th>com_fullname</th>\n",
       "      <th>com_intro</th>\n",
       "      <th>com_logo</th>\n",
       "      <th>com_name</th>\n",
       "      <th>day_per_week</th>\n",
       "      <th>est_date</th>\n",
       "      <th>industry</th>\n",
       "      <th>job_academic</th>\n",
       "      <th>job_deadline</th>\n",
       "      <th>job_links</th>\n",
       "      <th>job_title</th>\n",
       "      <th>num_employee</th>\n",
       "      <th>released_time</th>\n",
       "      <th>tag</th>\n",
       "      <th>time_span</th>\n",
       "      <th>update_time</th>\n",
       "      <th>wage</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>235875.0000</td>\n",
       "      <td>北京</td>\n",
       "      <td>公司类型：有限责任公司(台港澳法人独资)</td>\n",
       "      <td>淘宝（中国）软件有限公司</td>\n",
       "      <td>淘宝网是亚太地区较大的网络零售、商圈</td>\n",
       "      <td>https://sxsimg.xiaoyuanzhao.com/FB/BC/FBDB6AC6...</td>\n",
       "      <td>淘宝</td>\n",
       "      <td>4</td>\n",
       "      <td>成立日期：2004-12-07</td>\n",
       "      <td>计算机/互联网</td>\n",
       "      <td>硕士</td>\n",
       "      <td>2018-04-13</td>\n",
       "      <td>https://www.shixiseng.com/intern/inn_g2vpcs8lukcr</td>\n",
       "      <td>【淘宝】算法工程师/算法专家</td>\n",
       "      <td>大型企业</td>\n",
       "      <td>7分钟前</td>\n",
       "      <td>数据挖掘</td>\n",
       "      <td>3</td>\n",
       "      <td>2018-03-21 10:48:06</td>\n",
       "      <td>200-201/天</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>27570.9972</td>\n",
       "      <td>上海</td>\n",
       "      <td>公司类型：股份有限公司(上市)</td>\n",
       "      <td>游族网络股份有限公司</td>\n",
       "      <td>全球领先的互动娱乐供应商</td>\n",
       "      <td>https://sxsimg.xiaoyuanzhao.com/BD/6D/BD305709...</td>\n",
       "      <td>游族网络</td>\n",
       "      <td>5</td>\n",
       "      <td>成立日期：1995-09-22</td>\n",
       "      <td>计算机/互联网</td>\n",
       "      <td>本科</td>\n",
       "      <td>2020-12-31</td>\n",
       "      <td>https://www.shixiseng.com/intern/inn_46watgzrvqsg</td>\n",
       "      <td>大数据挖掘工程师 （2018校园）</td>\n",
       "      <td>中型企业</td>\n",
       "      <td>18分钟前</td>\n",
       "      <td>软件</td>\n",
       "      <td>4</td>\n",
       "      <td>2018-03-21 10:37:22</td>\n",
       "      <td>160-280/天</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>314.5000</td>\n",
       "      <td>广州</td>\n",
       "      <td>公司类型：有限责任公司(台港澳法人独资)</td>\n",
       "      <td>广州网易互动娱乐有限公司</td>\n",
       "      <td>国内中国领先的互联网技术公司，游戏行业领导者。</td>\n",
       "      <td>https://sxsimg.xiaoyuanzhao.com/company_logo/2...</td>\n",
       "      <td>网易游戏</td>\n",
       "      <td>4</td>\n",
       "      <td>成立日期：2002-10-15</td>\n",
       "      <td>互联网</td>\n",
       "      <td>本科</td>\n",
       "      <td>2018-03-31</td>\n",
       "      <td>https://www.shixiseng.com/intern/inn_wnfrd8o7wly2</td>\n",
       "      <td>数据挖掘研究实习生（AI方向）</td>\n",
       "      <td>大型企业</td>\n",
       "      <td>32分钟前</td>\n",
       "      <td>数据挖掘</td>\n",
       "      <td>4</td>\n",
       "      <td>2018-03-21 10:23:45</td>\n",
       "      <td>130-150/天</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   auth_capital city             com_class  com_fullname  \\\n",
       "0   235875.0000   北京  公司类型：有限责任公司(台港澳法人独资)  淘宝（中国）软件有限公司   \n",
       "1    27570.9972   上海       公司类型：股份有限公司(上市)    游族网络股份有限公司   \n",
       "2      314.5000   广州  公司类型：有限责任公司(台港澳法人独资)  广州网易互动娱乐有限公司   \n",
       "\n",
       "                 com_intro                                           com_logo  \\\n",
       "0       淘宝网是亚太地区较大的网络零售、商圈  https://sxsimg.xiaoyuanzhao.com/FB/BC/FBDB6AC6...   \n",
       "1             全球领先的互动娱乐供应商  https://sxsimg.xiaoyuanzhao.com/BD/6D/BD305709...   \n",
       "2  国内中国领先的互联网技术公司，游戏行业领导者。  https://sxsimg.xiaoyuanzhao.com/company_logo/2...   \n",
       "\n",
       "  com_name  day_per_week         est_date industry job_academic job_deadline  \\\n",
       "0       淘宝             4  成立日期：2004-12-07  计算机/互联网           硕士   2018-04-13   \n",
       "1     游族网络             5  成立日期：1995-09-22  计算机/互联网           本科   2020-12-31   \n",
       "2     网易游戏             4  成立日期：2002-10-15      互联网           本科   2018-03-31   \n",
       "\n",
       "                                           job_links          job_title  \\\n",
       "0  https://www.shixiseng.com/intern/inn_g2vpcs8lukcr     【淘宝】算法工程师/算法专家   \n",
       "1  https://www.shixiseng.com/intern/inn_46watgzrvqsg  大数据挖掘工程师 （2018校园）   \n",
       "2  https://www.shixiseng.com/intern/inn_wnfrd8o7wly2    数据挖掘研究实习生（AI方向）   \n",
       "\n",
       "  num_employee released_time   tag  time_span          update_time       wage  \n",
       "0         大型企业          7分钟前  数据挖掘          3  2018-03-21 10:48:06  200-201/天  \n",
       "1         中型企业         18分钟前    软件          4  2018-03-21 10:37:22  160-280/天  \n",
       "2         大型企业         32分钟前  数据挖掘          4  2018-03-21 10:23:45  130-150/天  "
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_clean['time_span'] = data['time_span'].map(mapping)\n",
    "data_clean.head(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 3.2.5 “wage”（每天工资）\n",
    "- 通过观察可知，该字段没有缺失值，并且格式全都为：xxx-xxx/天\n",
    "- 可以取一个最低工资，一个最高工资，再求一个平均工资\n",
    "- 这里，可以用之前的pd.Series.apply(function)来做，即定义一个函数提取每条记录中的工资最小和最大值\n",
    "- 不过，更加简便的方法肯定是正则提取啊"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "838    500-800/天\n",
       "444    200-250/天\n",
       "645    200-400/天\n",
       "622    100-200/天\n",
       "886    230-350/天\n",
       "Name: wage, dtype: object"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['wage'].sample(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这一步我估计需要解释一下：\n",
    "- 首先使用正则'([0-9.]+)-([0-9.]+)/天'提取出两列数字（也就是最低和最高工资），设置expand=True返回一个数据框\n",
    "- 由于返回回来的是字符串格式，需要把它们转换为整型（int），所以使用astype('int')\n",
    "- 最后，对每行记录求平均，返回一个Series赋值给data_clean['average_wage']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    200.5\n",
       "1    220.0\n",
       "2    140.0\n",
       "3    175.0\n",
       "4    175.0\n",
       "Name: average_wage, dtype: float64"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_clean['average_wage'] = data['wage'].str.extract('([0-9.]+)-([0-9.]+)/天', expand=True).astype('int').mean(axis = 1)\n",
    "data_clean['average_wage'].head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 3.3 时间数据处理\n",
    "包括“est_date”（公司成立日期）、“job_deadline”（截止时间）、“released_time”（发布时间）、“update_time”（更新时间）等字段  \n",
    "\n",
    "##### 3.3.1 “est_date”（公司成立日期）\n",
    "- 随机抽取发现“est_date”这个字段的格式为：成立日期：xxxx-xx-xx\n",
    "- 因此，直接正则提取，然后把它转换为datetime格式就可以了"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "92     成立日期：2007-08-17\n",
       "559    成立日期：2015-08-17\n",
       "765    成立日期：2012-07-10\n",
       "267    成立日期：2016-02-22\n",
       "957    成立日期：2015-05-28\n",
       "Name: est_date, dtype: object"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['est_date'].sample(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "491   2017-09-26\n",
       "534   2016-07-25\n",
       "710   2016-06-02\n",
       "378   2016-11-01\n",
       "563   2017-03-16\n",
       "Name: est_date, dtype: datetime64[ns]"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_clean['est_date'] = pd.to_datetime(data['est_date'].str.extract('成立日期：([0-9-]+)', expand=False))\n",
    "data_clean['est_date'].sample(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 3.3.2 “job_deadline”（截止时间）\n",
    "- 这个字段很干净，直接类型转换便可"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "864    2018-04-05\n",
       "241    2018-05-31\n",
       "304    2018-12-31\n",
       "188    2018-04-30\n",
       "425    2018-03-31\n",
       "Name: job_deadline, dtype: object"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['job_deadline'].sample(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_clean['job_deadline'] = pd.to_datetime(data['job_deadline'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 3.3.3 “released_time”（发布时间）\n",
    "- 观察数据发现，该字段1小时内的都以分钟表示、1小时-2天内的都以小时表示、2天-1周内的都以天表示，1周-1个月内的都以周表示，1个月以上的以月表示\n",
    "- 可以考虑清洗成：2天以内是最新的（newest），2天-1周是新的（new），1周-1个月是可以投简历的（acceptable），1个月以上的是旧的（old）\n",
    "- 这个的处理方法很多，我的方法是先把每条记录中的分钟、小时、天、周、月提取出来，再定义一个映射map一下就可以了"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "764      1周前\n",
       "55     21小时前\n",
       "595      2天前\n",
       "439    23小时前\n",
       "745      7天前\n",
       "Name: released_time, dtype: object"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['released_time'].sample(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "305       new\n",
       "83     newest\n",
       "301       new\n",
       "443    newest\n",
       "351    newest\n",
       "Name: released_time, dtype: object"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_clean['released_time'] = data['released_time'].str.extract('[0-9-]+(\\w+)前', expand=False).map(\n",
    "    {'分钟':'newest', '小时':'newest', '天':'new', '周':'acceptable', '月':'old'})\n",
    "data_clean['released_time'].sample(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 3.3.4 “update_time”（更新时间）\n",
    "- 更新时间字段格式很工整，直接转换类型便可"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "587    2018-03-20 14:28:14\n",
       "122    2018-03-18 10:56:26\n",
       "775    2018-03-14 09:24:40\n",
       "268    2018-03-20 12:53:21\n",
       "852    2018-03-08 13:30:08\n",
       "Name: update_time, dtype: object"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['update_time'].sample(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_clean['update_time'] = pd.to_datetime(data['update_time'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 3.4 字符型数据处理\n",
    "包括“city”（城市）、“com_class”（公司类型）、“com_intro（公司简介）”、“job_title”（职位名称）等字段\n",
    "\n",
    "##### 3.4.1 “city”（城市）处理\n",
    "- 乍一看这个字段还挺整洁的，取唯一值看一下发现有些城市还是需要稍微处理一下\n",
    "- 比如说成都有“成都市”和“成都”，珠海有“珠海市”和“珠海”等\n",
    "- 直接赋值处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['北京', '上海', '广州', nan, '南京', '深圳', '宁波', '杭州', '西安', '成都', '合肥',\n",
       "       '珠海市', '其他', '重庆', '武汉', '无锡', '天津', '珠海 深圳', '长沙', '厦门', '珠海',\n",
       "       '济南', '香港', '苏州', '上海漕河泾开发区', '晋江', '东莞', '成都市', '大连', '福州', '沈阳'], dtype=object)"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['city'].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_clean.loc[data_clean['city'] == '成都市', 'city'] = '成都'\n",
    "data_clean.loc[data_clean['city'].isin(['珠海市', '珠海 深圳', '珠海']), 'city'] = '珠海'\n",
    "data_clean.loc[data_clean['city'] == '上海漕河泾开发区', 'city'] = '上海'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 忍不住好奇心，先看一下招聘“机器学习算法”实习生前10的城市\n",
    "- 发现北京遥遥领先、接着是上海、杭州、深圳、广州"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x10ace4d30>"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlUAAAJMCAYAAADT31PhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4xLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvAOZPmwAAIABJREFUeJzt3Xu05Wdd3/HPJBMwJgrGAcJgESog\nl7oAoQJpwIAE5RqK8MUrco1UKopiES+11lAQKVZUqEGggCA8XOQaboJgBKElgDeacjMUCSSOBUJQ\nISTTP5495DBMMpNzvjl79p7Xa61Zc/Zvn7PP81v7nH3e+/ndduzduzcAAGzNUcseAADAOhBVAAAN\nRBUAQANRBQDQQFQBADQQVQAADUQVAEADUQUA0EBUAQA02Lmk7+s07gDAKtlxsE9YVlTl/PPP37bv\ntWvXruzZs2fbvt92s36rbZ3Xb53XLbF+q876ra7tXrfdu3cf0ufZ/AcA0EBUAQA0EFUAAA1EFQBA\nA1EFANBAVAEANBBVAAANRBUAQANRBQDQQFQBADQQVQAADUQVAEADUQUA0EBUAQA0EFUAAA1EFQBA\nA1EFANBAVAEANBBVAAANRBUAQANRBQDQQFQBADQQVQAADUQVAECDncsewFVx6aPut6mvu2CT3+/o\nZ79mk18JABxpzFQBADQQVQAADUQVAEADUQUA0EBUAQA0EFUAAA1EFQBAA1EFANBAVAEANBBVAAAN\nRBUAQANRBQDQQFQBADQQVQAADUQVAEADUQUA0EBUAQA0EFUAAA1EFQBAA1EFANBAVAEANBBVAAAN\nRBUAQANRBQDQQFQBADQQVQAADUQVAEADUQUA0EBUAQA0EFUAAA1EFQBAA1EFANBAVAEANBBVAAAN\nRBUAQANRBQDQQFQBADQQVQAADUQVAEADUQUA0EBUAQA0EFUAAA1EFQBAA1EFANBAVAEANBBVAAAN\nRBUAQANRBQDQQFQBADQQVQAADUQVAEADUQUA0EBUAQA0EFUAAA1EFQBAA1EFANBAVAEANBBVAAAN\nRBUAQANRBQDQQFQBADQQVQAADUQVAEADUQUA0EBUAQA0EFUAAA1EFQBAA1EFANBAVAEANBBVAAAN\nRBUAQANRBQDQQFQBADQQVQAADUQVAECDnYfySVV1vSRvHGPctqqek+QWSc4aY5yxuP9rlgEAHEkO\ndabqaUmOraoHJDl6jHFSkt1VddMDLbu6BgsAcLg66ExVVd0tyReSfDrJKUnG4q63JTk5yW0PsOzD\nB3ic05OcniRjjOzatesqD/aCq/wVW7OZMS7Dzp07V2asm2H9Vtc6r1ti/Vad9Vtdh+u6XWlUVdU1\nkvzHJPdP8qokxyX55OLui5Lc5AqWfY0xxplJzlzc3Ltnz54tDXw7rMIYkxl/qzLWzbB+q2ud1y2x\nfqvO+q2u7V633bt3H9LnHWzz388n+d0xxmcXty9Ocuzi4+MXX3+gZQAAR5SDBdDdkzymqt6e5DZJ\n7pu5eS9Jbp3kvCTnHGAZAMAR5Uo3/40x7rLv40VY3S/J2VW1O8k9k9wxyd4DLAMAOKIc8qa6McYp\nY4yLMndWf3eSu44xPnegZVfHQAEADmeHdJ6qjcYYn8nlR/td4TIAgCOJncoBABqIKgCABqIKAKCB\nqAIAaCCqAAAaiCoAgAaiCgCggagCAGggqgAAGogqAIAGogoAoIGoAgBoIKoAABqIKgCABqIKAKCB\nqAIAaCCqAAAaiCoAgAaiCgCggagCAGggqgAAGogqAIAGogoAoIGoAgBoIKoAABqIKgCABqIKAKCB\nqAIAaCCqAAAaiCoAgAaiCgCggagCAGggqgAAGogqAIAGogoAoIGoAgBoIKoAABqIKgCABqIKAKCB\nqAIAaCCqAAAaiCoAgAaiCgCggagCAGggqgAAGogqAIAGogoAoIGoAgBoIKoAABqIKgCABqIKAKCB\nqAIAaCCqAAAaiCoAgAaiCgCggagCAGggqgAAGogqAIAGogoAoIGoAgBoIKoAABqIKgCABqIKAKCB\nqAIAaCCqAAAaiCoAgAaiCgCggagCAGggqgAAGogqAIAGogoAoIGoAgBoIKoAABqIKgCABqIKAKCB\nqAIAaCCqAAAaiCoAgAaiCgCggagCAGggqgAAGogqAIAGogoAoIGoAgBoIKoAABqIKgCABqIKAKCB\nqAIAaCCqAAAaiCoAgAaiCgCggagCAGggqgAAGogqAIAGogoAoIGoAgBoIKoAABqIKgCABqIKAKCB\nqAIAaLDzUD6pqk5Icrsk7x9j7Ll6hwQAsHoOGlVVdf0kr0zyuiRPr6q7JXlKklskOWuMccbi856z\n/zIAgCPFoWz+u1WSx40xnpTkTUnuluToMcZJSXZX1U2r6gH7L7v6hgwAcPg56EzVGOOPk6Sq7pLk\nu5KckGQs7n5bkpOT3PYAyz688XGq6vQkpy8eM7t27brKg73gKn/F1mxmjMuwc+fOlRnrZli/1bXO\n65ZYv1Vn/VbX4bpuh7pP1Y4kD05ySZIdST65uOuiJDdJctwBln2VMcaZSc5c3Ny7Z8/hv2vWKowx\nmfG3KmPdDOu3utZ53RLrt+qs3+ra7nXbvXv3IX3eIR39N8bYO8Z4TJJ3JbljkmMXdx2/eIyLD7AM\nAOCIcdD4qaonVNVDFjevnbmT+smL27dOcl6Scw6wDADgiHEom//OTDKq6pFJ/jrJq5L8aVXtTnLP\nzJmrvUnO3m8ZAMAR41B2VP9MklM3LquqUxbLnjrG+NwVLQMAOFIc0o7q+1uE1jjYMgCAI4UdygEA\nGogqAIAGogoAoIGoAgBoIKoAABqIKgCABqIKAKCBqAIAaCCqAAAaiCoAgAaiCgCggagCAGggqgAA\nGogqAIAGogoAoIGoAgBoIKoAABqIKgCABqIKAKCBqAIAaCCqAAAaiCoAgAaiCgCggagCAGggqgAA\nGogqAIAGogoAoIGoAgBoIKoAABqIKgCABqIKAKCBqAIAaCCqAAAaiCoAgAaiCgCggagCAGggqgAA\nGogqAIAGogoAoIGoAgBoIKoAABqIKgCABqIKAKCBqAIAaCCqAAAaiCoAgAaiCgCggagCAGggqgAA\nGogqAIAGogoAoIGoAgBoIKoAABqIKgCABqIKAKCBqAIAaCCqAAAaiCoAgAaiCgCggagCAGggqgAA\nGogqAIAGogoAoIGoAgBoIKoAABqIKgCABqIKAKCBqAIAaCCqAAAaiCoAgAaiCgCggagCAGggqgAA\nGogqAIAGogoAoIGoAgBoIKoAABqIKgCABqIKAKCBqAIAaCCqAAAaiCoAgAaiCgCggagCAGggqgAA\nGogqAIAGogoAoIGoAgBoIKoAABqIKgCABqIKAKCBqAIAaCCqAAAaiCoAgAaiCgCggagCAGggqgAA\nGogqAIAGogoAoIGoAgBoIKoAABrsPNgnVNW1krxk8bkXJ3lwkmcluUWSs8YYZyw+7zn7LwMAOFIc\nykzVDyd5+hjj1CSfTvIDSY4eY5yUZHdV3bSqHrD/sqtvyAAAh5+DzlSNMZ654eZ1kvxIkv+2uP22\nJCcnuW2Ssd+yD298nKo6Pcnpi8fMrl27rvJgL7jKX7E1mxnjMuzcuXNlxroZ1m91rfO6JdZv1Vm/\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10ac96828>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "data_clean['city'].value_counts().nlargest(10).plot(kind = 'bar')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 3.4.2 “com_class”（公司和企业类型）处理\n",
    "- 类型有很多，可以按照组织形式可以分为独资企业、合伙企业、公司制企业，公司制企业又分为有限责任公司和股份有限公司等等\n",
    "- 这里主要把它分为‘股份有限公司（未上市）’、‘股份有限公司（上市）’、‘有限责任公司’、‘外商投资公司’、‘有限合伙企业’、‘国有企业’这6种\n",
    "- 处理方法跟上面币种的处理方法一致"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 首先看看都有哪些公司（或企业）类型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['公司类型：有限责任公司(台港澳法人独资)',\n",
       " '公司类型：股份有限公司(上市)',\n",
       " '公司类型：有限责任公司(外国法人独资)',\n",
       " nan,\n",
       " '公司类型：有限责任公司',\n",
       " '公司类型：有限责任公司（法人独资）',\n",
       " '公司类型：其他有限责任公司',\n",
       " ' ',\n",
       " '公司类型：其他股份有限公司(非上市)',\n",
       " '公司类型：有限责任公司(中外合资)',\n",
       " '公司类型：有限责任公司(自然人投资或控股)',\n",
       " '公司类型：有限责任公司(自然人独资)',\n",
       " '公司类型：有限责任公司（自然人投资或控股）',\n",
       " '公司类型：有限责任公司(法人独资)',\n",
       " '公司类型：有限责任公司分公司（自然人独资）',\n",
       " '公司类型：股份有限公司(中外合资、上市)',\n",
       " '公司类型：有限责任公司（台港澳法人独资）',\n",
       " '公司类型：有限责任公司\\n',\n",
       " '公司类型：有限责任公司（自然人独资）',\n",
       " '公司类型：有限责任公司（自然人投资或控股的法人独资）',\n",
       " '公司类型：股份有限公司(非上市、自然人投资或控股)',\n",
       " '公司类型：有限责任公司(台港澳与境内合资)',\n",
       " '公司类型：无',\n",
       " '公司类型：股份有限公司分公司(上市、国有控股)',\n",
       " '公司类型：私营有限责任公司(自然人控股或私营性质企业控股)',\n",
       " '公司类型：全民所有制',\n",
       " '公司类型：有限责任公司（外国法人独资）',\n",
       " '公司类型：股份有限公司(非上市)',\n",
       " '公司类型：股份有限公司(上市、自然人投资或控股)',\n",
       " '公司类型：股份有限公司(台港澳与境内合资、上市)',\n",
       " '公司类型：其他股份有限公司(上市)',\n",
       " '公司类型：有限责任公司分公司（非自然人投资或控股的法人独资）',\n",
       " '公司类型：其他股份有限公司（上市）',\n",
       " '公司类型：有限责任公司（非自然人投资或控股的法人独资）',\n",
       " '公司类型：股份有限公司',\n",
       " '公司类型：非上市股份有限公司',\n",
       " '公司类型：分公司',\n",
       " '公司类型：股份有限公司（上市、自然人投资或控股）',\n",
       " '公司类型：有限合伙',\n",
       " '公司类型：外商投资公司分公司',\n",
       " '公司类型：有限责任公司(台港澳与外国投资者合资)',\n",
       " '公司类型：股份有限公司（非上市）',\n",
       " '公司类型：有限责任公司(外商投资企业法人独资)',\n",
       " '公司类型：上市股份有限公司',\n",
       " '公司类型：股份有限公司(台港澳与境内合资、未上市)',\n",
       " '公司类型：股份有限公司（非上市、自然人投资或控股）',\n",
       " '公司类型：股份有限公司（台港澳与境内合资、未上市）',\n",
       " '公司类型：股份有限公司(中外合资、未上市)']"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list(data['com_class'].unique())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 定义一个函数处理这些类型，利用pd.Series.apply(function)方法\n",
    "- 把处理好的数据保存到data_clean中"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_com_type(string):\n",
    "    if string == None:\n",
    "        return np.nan\n",
    "    elif ('非上市' in string) or ('未上市' in string):\n",
    "        return '股份有限公司（未上市）'\n",
    "    elif '股份' in string:\n",
    "        return '股份有限公司（上市）'\n",
    "    elif '责任' in string:\n",
    "        return '有限责任公司'\n",
    "    elif '外商投资' in string:\n",
    "        return '外商投资公司'\n",
    "    elif '有限合伙' in string:\n",
    "        return '有限合伙企业'\n",
    "    elif '全民所有' in string:\n",
    "        return '国有企业'\n",
    "    else:\n",
    "        return np.nan"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>com_class</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>658</th>\n",
       "      <td>公司类型</td>\n",
       "      <td>有限责任公司(自然人投资或控股)</td>\n",
       "      <td>有限责任公司</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>115</th>\n",
       "      <td>公司类型</td>\n",
       "      <td>有限责任公司(外国法人独资)</td>\n",
       "      <td>有限责任公司</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>458</th>\n",
       "      <td>公司类型</td>\n",
       "      <td>有限责任公司（自然人投资或控股）</td>\n",
       "      <td>有限责任公司</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>962</th>\n",
       "      <td>公司类型</td>\n",
       "      <td>有限责任公司(自然人投资或控股)</td>\n",
       "      <td>有限责任公司</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>325</th>\n",
       "      <td>公司类型</td>\n",
       "      <td>有限责任公司(法人独资)</td>\n",
       "      <td>有限责任公司</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        0                 1 com_class\n",
       "658  公司类型  有限责任公司(自然人投资或控股)    有限责任公司\n",
       "115  公司类型    有限责任公司(外国法人独资)    有限责任公司\n",
       "458  公司类型  有限责任公司（自然人投资或控股）    有限责任公司\n",
       "962  公司类型  有限责任公司(自然人投资或控股)    有限责任公司\n",
       "325  公司类型      有限责任公司(法人独资)    有限责任公司"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "com_class = data['com_class'].str.split('：', expand = True)\n",
    "com_class['com_class'] = com_class[1].apply(get_com_type)\n",
    "com_class.sample(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_clean['com_class'] = com_class['com_class']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- “com_intro”（公司简介）、“job_title”（职位名称）两个字段暂时不处理"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 3.5 “com_logo”（公司logo）、“industry”（行业）也暂时不处理\n",
    "- 更改一下每列的顺序\n",
    "- 再把data_clean保存到本地"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_clean = data_clean.reindex(columns=['com_fullname', 'com_name', 'job_academic', 'job_links', \n",
    "                                         'tag','auth_capital', 'day_per_week', 'num_employee', 'time_span',\n",
    "                                         'average_wage', 'est_date', 'job_deadline', 'released_time',\n",
    "                                         'update_time', 'city', 'com_class', 'com_intro', 'job_title',\n",
    "                                         'com_logo', 'industry'])\n",
    "data_clean.to_csv('/Users/apple/Desktop/shixiseng/data_clean.csv', index = False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4. 数据分析\n",
    "终于可以进入数据分析的阶段。可以利用以上的城市、薪资、学历、行业、公司等相关字段，分析出目前国内公司对机器学习算法实习生的需求状况（仅基于实习僧网站），以及公司的相关情况\n",
    "\n",
    "- 首先，看看清洗完的数据的基本情况"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 4.1 数据基本情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>com_fullname</th>\n",
       "      <th>com_name</th>\n",
       "      <th>job_academic</th>\n",
       "      <th>job_links</th>\n",
       "      <th>tag</th>\n",
       "      <th>auth_capital</th>\n",
       "      <th>day_per_week</th>\n",
       "      <th>num_employee</th>\n",
       "      <th>time_span</th>\n",
       "      <th>average_wage</th>\n",
       "      <th>est_date</th>\n",
       "      <th>job_deadline</th>\n",
       "      <th>released_time</th>\n",
       "      <th>update_time</th>\n",
       "      <th>city</th>\n",
       "      <th>com_class</th>\n",
       "      <th>com_intro</th>\n",
       "      <th>job_title</th>\n",
       "      <th>com_logo</th>\n",
       "      <th>industry</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>656</th>\n",
       "      <td>深圳码隆科技有限公司</td>\n",
       "      <td>码隆科技</td>\n",
       "      <td>本科</td>\n",
       "      <td>https://www.shixiseng.com/intern/inn_thlsquqyifps</td>\n",
       "      <td>软件</td>\n",
       "      <td>153.0858</td>\n",
       "      <td>5</td>\n",
       "      <td>中型企业</td>\n",
       "      <td>4</td>\n",
       "      <td>300.0</td>\n",
       "      <td>2014-07-16</td>\n",
       "      <td>2018-06-30</td>\n",
       "      <td>new</td>\n",
       "      <td>2018-03-19 14:03:34</td>\n",
       "      <td>深圳</td>\n",
       "      <td>有限责任公司</td>\n",
       "      <td>一家专注于深度学习与计算机视觉技术创新的人工智能公司</td>\n",
       "      <td>深度学习算法实习生</td>\n",
       "      <td>https://sxsimg.xiaoyuanzhao.com/F5/33/F5E7B0CF...</td>\n",
       "      <td>计算机/互联网</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>394</th>\n",
       "      <td>北京融联世纪信息技术有限公司</td>\n",
       "      <td>融360</td>\n",
       "      <td>本科</td>\n",
       "      <td>https://www.shixiseng.com/intern/inn_fpm2hqfvovgb</td>\n",
       "      <td>算法</td>\n",
       "      <td>62900.0000</td>\n",
       "      <td>4</td>\n",
       "      <td>中型企业</td>\n",
       "      <td>3</td>\n",
       "      <td>335.0</td>\n",
       "      <td>2012-06-25</td>\n",
       "      <td>2018-04-17</td>\n",
       "      <td>newest</td>\n",
       "      <td>2018-03-22 10:16:40</td>\n",
       "      <td>北京</td>\n",
       "      <td>有限责任公司</td>\n",
       "      <td>互联网金融垂直搜索平台</td>\n",
       "      <td>数据算法助理</td>\n",
       "      <td>https://sxsimg.xiaoyuanzhao.com/CC/12/CCDFD256...</td>\n",
       "      <td>互联网,金融/保险</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>958</th>\n",
       "      <td>上海珞鹏航空科技有限公司</td>\n",
       "      <td>珞鹏航空</td>\n",
       "      <td>硕士</td>\n",
       "      <td>https://www.shixiseng.com/intern/inn_g0zppaybef1u</td>\n",
       "      <td>软件</td>\n",
       "      <td>300.0000</td>\n",
       "      <td>5</td>\n",
       "      <td>小型企业</td>\n",
       "      <td>8</td>\n",
       "      <td>150.0</td>\n",
       "      <td>2016-09-21</td>\n",
       "      <td>2018-06-30</td>\n",
       "      <td>old</td>\n",
       "      <td>2017-12-15 09:53:56</td>\n",
       "      <td>上海</td>\n",
       "      <td>有限责任公司</td>\n",
       "      <td>全球领先的涵道式无人机研发企业</td>\n",
       "      <td>无人机导航算法工程师</td>\n",
       "      <td>https://sxsimg.xiaoyuanzhao.com/76/3F/76726149...</td>\n",
       "      <td>航天/航空</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       com_fullname com_name job_academic  \\\n",
       "656      深圳码隆科技有限公司     码隆科技           本科   \n",
       "394  北京融联世纪信息技术有限公司     融360           本科   \n",
       "958    上海珞鹏航空科技有限公司     珞鹏航空           硕士   \n",
       "\n",
       "                                             job_links tag  auth_capital  \\\n",
       "656  https://www.shixiseng.com/intern/inn_thlsquqyifps  软件      153.0858   \n",
       "394  https://www.shixiseng.com/intern/inn_fpm2hqfvovgb  算法    62900.0000   \n",
       "958  https://www.shixiseng.com/intern/inn_g0zppaybef1u  软件      300.0000   \n",
       "\n",
       "     day_per_week num_employee  time_span  average_wage   est_date  \\\n",
       "656             5         中型企业          4         300.0 2014-07-16   \n",
       "394             4         中型企业          3         335.0 2012-06-25   \n",
       "958             5         小型企业          8         150.0 2016-09-21   \n",
       "\n",
       "    job_deadline released_time         update_time city com_class  \\\n",
       "656   2018-06-30           new 2018-03-19 14:03:34   深圳    有限责任公司   \n",
       "394   2018-04-17        newest 2018-03-22 10:16:40   北京    有限责任公司   \n",
       "958   2018-06-30           old 2017-12-15 09:53:56   上海    有限责任公司   \n",
       "\n",
       "                      com_intro   job_title  \\\n",
       "656  一家专注于深度学习与计算机视觉技术创新的人工智能公司   深度学习算法实习生   \n",
       "394                 互联网金融垂直搜索平台      数据算法助理   \n",
       "958             全球领先的涵道式无人机研发企业  无人机导航算法工程师   \n",
       "\n",
       "                                              com_logo   industry  \n",
       "656  https://sxsimg.xiaoyuanzhao.com/F5/33/F5E7B0CF...    计算机/互联网  \n",
       "394  https://sxsimg.xiaoyuanzhao.com/CC/12/CCDFD256...  互联网,金融/保险  \n",
       "958  https://sxsimg.xiaoyuanzhao.com/76/3F/76726149...      航天/航空  "
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_clean.sample(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 878 entries, 0 to 977\n",
      "Data columns (total 20 columns):\n",
      "com_fullname     874 non-null object\n",
      "com_name         874 non-null object\n",
      "job_academic     878 non-null object\n",
      "job_links        878 non-null object\n",
      "tag              878 non-null object\n",
      "auth_capital     782 non-null float64\n",
      "day_per_week     878 non-null int64\n",
      "num_employee     872 non-null object\n",
      "time_span        878 non-null int64\n",
      "average_wage     878 non-null float64\n",
      "est_date         788 non-null datetime64[ns]\n",
      "job_deadline     878 non-null datetime64[ns]\n",
      "released_time    878 non-null object\n",
      "update_time      878 non-null datetime64[ns]\n",
      "city             874 non-null object\n",
      "com_class        794 non-null object\n",
      "com_intro        874 non-null object\n",
      "job_title        878 non-null object\n",
      "com_logo         874 non-null object\n",
      "industry         862 non-null object\n",
      "dtypes: datetime64[ns](3), float64(2), int64(2), object(13)\n",
      "memory usage: 144.0+ KB\n"
     ]
    }
   ],
   "source": [
    "data_clean.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "很好，数据是想要的样子  \n",
    "  \n",
    "#### 4.2 城市与职位数量\n",
    "- 其实由上面已经知道了，北上广深杭这五个城市毫无疑问地占据了前五的位置，其中北京遥遥领先，有471个职位，占53.89%；上海有164个，占18.76%；北上广深杭这五个城市占了所有的89.93%（将近九成），说明这个职位还是集中在一线城市\n",
    "- 另外值得注意的是，杭州排到了第三，在广州和深圳的前面，说明杭州在这方面的发展还挺好的\n",
    "- 原以为杭州的职位都被阿里系霸占了，结果抽取数据出来一看发现并没有，其中一家叫“非白三维”的公司占了10个职位，这到底是一家什么样的公司？可以去了解一下"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "北京    471\n",
       "上海    164\n",
       "杭州     55\n",
       "深圳     52\n",
       "广州     44\n",
       "成都     21\n",
       "南京     14\n",
       "武汉      9\n",
       "西安      8\n",
       "重庆      4\n",
       "苏州      4\n",
       "沈阳      4\n",
       "珠海      4\n",
       "合肥      3\n",
       "无锡      2\n",
       "Name: city, dtype: int64"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "city = data_clean['city'].value_counts()\n",
    "city[:15]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts': '/nbextensions/echarts/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "    <div id=\"3ca4b1f16dfe48238229964e246c6b14\" style=\"width:800px;height:400px;\"></div>\n",
       "\n",
       "\n",
       "<script>\n",
       "    require(['echarts'], function(echarts) {\n",
       "        \n",
       "var myChart_3ca4b1f16dfe48238229964e246c6b14 = echarts.init(document.getElementById('3ca4b1f16dfe48238229964e246c6b14'), null, {renderer: 'canvas'});\n",
       "var option_3ca4b1f16dfe48238229964e246c6b14 = {\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u57ce\\u5e02\\u4e0e\\u804c\\u4f4d\\u6570\\u91cf\",\n",
       "            \"subtext\": \"\",\n",
       "            \"left\": \"auto\",\n",
       "            \"top\": \"auto\",\n",
       "            \"textStyle\": {\n",
       "                \"color\": \"#000\",\n",
       "                \"fontSize\": 18\n",
       "            },\n",
       "            \"subtextStyle\": {\n",
       "                \"color\": \"#aaa\",\n",
       "                \"fontSize\": 12\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"toolbox\": {\n",
       "        \"show\": true,\n",
       "        \"orient\": \"vertical\",\n",
       "        \"left\": \"95%\",\n",
       "        \"top\": \"center\",\n",
       "        \"feature\": {\n",
       "            \"saveAsImage\": {\n",
       "                \"show\": true,\n",
       "                \"title\": \"\\u4e0b\\u8f7d\\u56fe\\u7247\"\n",
       "            },\n",
       "            \"restore\": {\n",
       "                \"show\": true\n",
       "            },\n",
       "            \"dataView\": {\n",
       "                \"show\": true\n",
       "            }\n",
       "        }\n",
       "    },\n",
       "    \"series_id\": 1669673,\n",
       "    \"tooltip\": {\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"formatter\": null,\n",
       "        \"textStyle\": {\n",
       "            \"color\": \"#fff\",\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"backgroundColor\": \"rgba(50,50,50,0.7)\",\n",
       "        \"borderColor\": \"#333\",\n",
       "        \"borderWidth\": 0\n",
       "    },\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\",\n",
       "            \"data\": [\n",
       "                471.0,\n",
       "                164.0,\n",
       "                55.0,\n",
       "                52.0,\n",
       "                44.0,\n",
       "                21.0,\n",
       "                14.0,\n",
       "                9.0,\n",
       "                8.0,\n",
       "                4.0,\n",
       "                4.0,\n",
       "                4.0,\n",
       "                4.0,\n",
       "                3.0,\n",
       "                2.0\n",
       "            ],\n",
       "            \"stack\": \"\",\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"label\": {\n",
       "                \"normal\": {\n",
       "                    \"show\": false,\n",
       "                    \"position\": \"top\",\n",
       "                    \"textStyle\": {\n",
       "                        \"color\": \"#000\",\n",
       "                        \"fontSize\": 12\n",
       "                    },\n",
       "                    \"formatter\": null\n",
       "                },\n",
       "                \"emphasis\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": null,\n",
       "                    \"textStyle\": {\n",
       "                        \"color\": \"#fff\",\n",
       "                        \"fontSize\": 12\n",
       "                    }\n",
       "                }\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"type\": \"max\",\n",
       "                        \"name\": \"Maximum\",\n",
       "                        \"valueDim\": null,\n",
       "                        \"symbol\": \"pin\",\n",
       "                        \"symbolSize\": 50,\n",
       "                        \"label\": {\n",
       "                            \"normal\": {\n",
       "                                \"textStyle\": {\n",
       "                                    \"color\": \"#fff\"\n",
       "                                }\n",
       "                            }\n",
       "                        }\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"markLine\": {\n",
       "                \"data\": []\n",
       "            },\n",
       "            \"seriesId\": 1669673\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\"\n",
       "            ],\n",
       "            \"selectedMode\": \"multiple\",\n",
       "            \"show\": true,\n",
       "            \"left\": \"center\",\n",
       "            \"top\": \"top\",\n",
       "            \"orient\": \"horizontal\",\n",
       "            \"textStyle\": {\n",
       "                \"fontSize\": 12,\n",
       "                \"color\": \"#333\"\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"backgroundColor\": \"#fff\",\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"name\": \"\",\n",
       "            \"show\": true,\n",
       "            \"nameLocation\": \"middle\",\n",
       "            \"nameGap\": 25,\n",
       "            \"nameTextStyle\": {\n",
       "                \"fontSize\": 14\n",
       "            },\n",
       "            \"axisLabel\": {\n",
       "                \"interval\": \"auto\",\n",
       "                \"rotate\": 0,\n",
       "                \"margin\": 8,\n",
       "                \"textStyle\": {\n",
       "                    \"fontSize\": 12,\n",
       "                    \"color\": \"#000\"\n",
       "                }\n",
       "            },\n",
       "            \"axisTick\": {\n",
       "                \"alignWithLabel\": false\n",
       "            },\n",
       "            \"inverse\": false,\n",
       "            \"position\": null,\n",
       "            \"boundaryGap\": true,\n",
       "            \"min\": null,\n",
       "            \"max\": null,\n",
       "            \"data\": [\n",
       "                \"\\u5317\\u4eac\",\n",
       "                \"\\u4e0a\\u6d77\",\n",
       "                \"\\u676d\\u5dde\",\n",
       "                \"\\u6df1\\u5733\",\n",
       "                \"\\u5e7f\\u5dde\",\n",
       "                \"\\u6210\\u90fd\",\n",
       "                \"\\u5357\\u4eac\",\n",
       "                \"\\u6b66\\u6c49\",\n",
       "                \"\\u897f\\u5b89\",\n",
       "                \"\\u91cd\\u5e86\",\n",
       "                \"\\u82cf\\u5dde\",\n",
       "                \"\\u6c88\\u9633\",\n",
       "                \"\\u73e0\\u6d77\",\n",
       "                \"\\u5408\\u80a5\",\n",
       "                \"\\u65e0\\u9521\"\n",
       "            ],\n",
       "            \"type\": \"category\"\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"name\": \"\",\n",
       "            \"show\": true,\n",
       "            \"nameLocation\": \"middle\",\n",
       "            \"nameGap\": 25,\n",
       "            \"nameTextStyle\": {\n",
       "                \"fontSize\": 14\n",
       "            },\n",
       "            \"axisLabel\": {\n",
       "                \"formatter\": \"{value} \",\n",
       "                \"rotate\": 0,\n",
       "                \"interval\": \"auto\",\n",
       "                \"margin\": 8,\n",
       "                \"textStyle\": {\n",
       "                    \"fontSize\": 12,\n",
       "                    \"color\": \"#000\"\n",
       "                }\n",
       "            },\n",
       "            \"axisTick\": {\n",
       "                \"alignWithLabel\": false\n",
       "            },\n",
       "            \"inverse\": false,\n",
       "            \"position\": null,\n",
       "            \"boundaryGap\": true,\n",
       "            \"min\": null,\n",
       "            \"max\": null,\n",
       "            \"splitLine\": {\n",
       "                \"show\": true\n",
       "            },\n",
       "            \"type\": \"value\"\n",
       "        }\n",
       "    ],\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\",\n",
       "        \"#f6f5ec\"\n",
       "    ]\n",
       "};\n",
       "myChart_3ca4b1f16dfe48238229964e246c6b14.setOption(option_3ca4b1f16dfe48238229964e246c6b14);\n",
       "\n",
       "    });\n",
       "</script>\n"
      ],
      "text/plain": [
       "<pyecharts.charts.bar.Bar at 0x10adaad68>"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bar = pyecharts.Bar('城市与职位数量')\n",
    "bar.add('', city[:15].index, city[:15].values, mark_point=[\"max\"])\n",
    "bar"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "北京    53.89%\n",
       "上海    18.76%\n",
       "杭州     6.29%\n",
       "深圳     5.95%\n",
       "广州     5.03%\n",
       "成都     2.40%\n",
       "南京     1.60%\n",
       "武汉     1.03%\n",
       "西安     0.92%\n",
       "重庆     0.46%\n",
       "苏州     0.46%\n",
       "沈阳     0.46%\n",
       "珠海     0.46%\n",
       "合肥     0.34%\n",
       "无锡     0.23%\n",
       "Name: city, dtype: object"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "city_pct = (city/city.sum()).map(lambda x: '{:,.2%}'.format(x))\n",
    "city_pct[:15]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.89931350114416475"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(city/city.sum())[:5].sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "非白三维    10\n",
       "光珀       6\n",
       "虹软       5\n",
       "同花顺      4\n",
       "菜鸟网络     3\n",
       "Name: com_name, dtype: int64"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_clean.loc[data_clean['city'] == '杭州', 'com_name'].value_counts()[:5]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 再看看这15个个城市中，招聘职位数量前五的公司到底是哪些\n",
    "- 通过定义一个函数topN来实现"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "def topN(dataframe, n=5):\n",
    "    counts = dataframe.value_counts()\n",
    "    return counts[:n]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "city               \n",
       "上海    华院数据             10\n",
       "      爱奇艺               8\n",
       "      驭势科技              7\n",
       "      七牛云               4\n",
       "      纵目科技              4\n",
       "北京    百度               21\n",
       "      滴滴出行             19\n",
       "      今日头条             12\n",
       "      京东金融             10\n",
       "      作业帮               9\n",
       "南京    金智信息              2\n",
       "      南京地平线机器人技术        2\n",
       "      小黑鱼科技             2\n",
       "      矽岸信息              1\n",
       "      途牛旅游网             1\n",
       "合肥    乐职网               3\n",
       "广州    网易游戏              5\n",
       "      探迹                4\n",
       "      汇量科技              2\n",
       "      景驰科技              2\n",
       "      精点数据              2\n",
       "成都    天佑飞天              3\n",
       "      知道创宇              2\n",
       "      实验楼               1\n",
       "      川机院               1\n",
       "      博智信息              1\n",
       "无锡    英臻科技              1\n",
       "      乐骐科技              1\n",
       "杭州    非白三维             10\n",
       "      光珀                6\n",
       "      虹软                5\n",
       "      同花顺               4\n",
       "      菜鸟网络              3\n",
       "武汉    小弦科技              2\n",
       "      武汉安天              1\n",
       "      光庭信息              1\n",
       "      明日数据              1\n",
       "      乐行                1\n",
       "沈阳    东软集团              2\n",
       "      东软                2\n",
       "深圳    中科龙智             13\n",
       "      Webot             4\n",
       "      SenseTime商汤科技     3\n",
       "      美图                3\n",
       "      平安科技              3\n",
       "珠海    金山WPS             1\n",
       "      网钰科技              1\n",
       "      西山居               1\n",
       "      筑巢科技              1\n",
       "苏州    意能通               2\n",
       "      国科康成              1\n",
       "      华兴致远              1\n",
       "西安    中科微光              3\n",
       "      Wingspan          2\n",
       "      博彦科技              1\n",
       "      绿盟科技              1\n",
       "      西步数据              1\n",
       "重庆    赛迪技术              2\n",
       "      德勤全球交付中心          1\n",
       "      中国信息通信研究院西部分院     1\n",
       "Name: com_name, dtype: int64"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_clean.groupby('city').com_name.apply(topN).loc[list(city_pct[:15].index)]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 4.3 薪资\n",
    "\n",
    "##### 4.3.1 平均薪资\n",
    "- 由于\"average_wage\"（薪资）一列的单位是每天，所以可以跟\"day_per_week\"（每周天数）结合起来算每月的工资（以一个月4周算）\n",
    "- 另起一列“salary”（月工资）保存数据\n",
    "- 发现平均实习工资是3645元人民币，应该还是OK的噶？"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3644.9407744874716"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_clean['salary'] = data_clean['average_wage'] * data_clean['day_per_week'] * 4\n",
    "data_clean['salary'].mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 4.3.2 薪资与城市\n",
    "- 以城市分组，看不同城市平均实习工资怎么样，发现薪资前五名中，北上广深杭只有杭州进入了前五，不过前五中其它四个城市的样本量都太小，数据不具有代表性\n",
    "- 看看职位需求前10的城市，平均实习薪资怎么样，发现杭州是最高的，突破了4000（还算可以的噶？），紧接着是北京3790(弱弱地问一句，够房租不？)，然后是深圳、上海、南京、广州"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "city\n",
       "晋江    9000.000000\n",
       "长沙    4500.000000\n",
       "东莞    4150.000000\n",
       "杭州    4139.345455\n",
       "福州    4000.000000\n",
       "北京    3789.927813\n",
       "深圳    3783.538462\n",
       "苏州    3775.000000\n",
       "厦门    3750.000000\n",
       "上海    3579.170732\n",
       "Name: salary, dtype: float64"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "salary_by_city = data_clean.groupby('city')['salary'].mean()\n",
    "salary_by_city.nlargest(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "杭州    4139.345455\n",
       "北京    3789.927813\n",
       "深圳    3783.538462\n",
       "上海    3579.170732\n",
       "南京    3420.857143\n",
       "广州    3176.363636\n",
       "成都    2850.000000\n",
       "西安    2317.500000\n",
       "重庆    2222.500000\n",
       "武汉    1912.222222\n",
       "Name: salary, dtype: float64"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "top10_city = salary_by_city[city_pct.index[:10]].sort_values(ascending=False)\n",
    "top10_city"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts': '/nbextensions/echarts/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "    <div id=\"005d2fc2f70549da98fa0029ec6f487d\" style=\"width:800px;height:400px;\"></div>\n",
       "\n",
       "\n",
       "<script>\n",
       "    require(['echarts'], function(echarts) {\n",
       "        \n",
       "var myChart_005d2fc2f70549da98fa0029ec6f487d = echarts.init(document.getElementById('005d2fc2f70549da98fa0029ec6f487d'), null, {renderer: 'canvas'});\n",
       "var option_005d2fc2f70549da98fa0029ec6f487d = {\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u5317\\u4e0a\\u5e7f\\u6df1\\u676d\\u7b49\\u57ce\\u5e02\\u5e73\\u5747\\u5b9e\\u4e60\\u5de5\\u8d44\",\n",
       "            \"subtext\": \"\",\n",
       "            \"left\": \"auto\",\n",
       "            \"top\": \"auto\",\n",
       "            \"textStyle\": {\n",
       "                \"color\": \"#000\",\n",
       "                \"fontSize\": 18\n",
       "            },\n",
       "            \"subtextStyle\": {\n",
       "                \"color\": \"#aaa\",\n",
       "                \"fontSize\": 12\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"toolbox\": {\n",
       "        \"show\": true,\n",
       "        \"orient\": \"vertical\",\n",
       "        \"left\": \"95%\",\n",
       "        \"top\": \"center\",\n",
       "        \"feature\": {\n",
       "            \"saveAsImage\": {\n",
       "                \"show\": true,\n",
       "                \"title\": \"\\u4e0b\\u8f7d\\u56fe\\u7247\"\n",
       "            },\n",
       "            \"restore\": {\n",
       "                \"show\": true\n",
       "            },\n",
       "            \"dataView\": {\n",
       "                \"show\": true\n",
       "            }\n",
       "        }\n",
       "    },\n",
       "    \"series_id\": 6904187,\n",
       "    \"tooltip\": {\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"formatter\": null,\n",
       "        \"textStyle\": {\n",
       "            \"color\": \"#fff\",\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"backgroundColor\": \"rgba(50,50,50,0.7)\",\n",
       "        \"borderColor\": \"#333\",\n",
       "        \"borderWidth\": 0\n",
       "    },\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\",\n",
       "            \"data\": [\n",
       "                4139.0,\n",
       "                3790.0,\n",
       "                3784.0,\n",
       "                3579.0,\n",
       "                3421.0,\n",
       "                3176.0,\n",
       "                2850.0,\n",
       "                2318.0,\n",
       "                2222.0,\n",
       "                1912.0\n",
       "            ],\n",
       "            \"stack\": \"\",\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"label\": {\n",
       "                \"normal\": {\n",
       "                    \"show\": false,\n",
       "                    \"position\": \"top\",\n",
       "                    \"textStyle\": {\n",
       "                        \"color\": \"#000\",\n",
       "                        \"fontSize\": 12\n",
       "                    },\n",
       "                    \"formatter\": null\n",
       "                },\n",
       "                \"emphasis\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": null,\n",
       "                    \"textStyle\": {\n",
       "                        \"color\": \"#fff\",\n",
       "                        \"fontSize\": 12\n",
       "                    }\n",
       "                }\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"type\": \"max\",\n",
       "                        \"name\": \"Maximum\",\n",
       "                        \"valueDim\": null,\n",
       "                        \"symbol\": \"pin\",\n",
       "                        \"symbolSize\": 50,\n",
       "                        \"label\": {\n",
       "                            \"normal\": {\n",
       "                                \"textStyle\": {\n",
       "                                    \"color\": \"#fff\"\n",
       "                                }\n",
       "                            }\n",
       "                        }\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"markLine\": {\n",
       "                \"data\": []\n",
       "            },\n",
       "            \"seriesId\": 6904187\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\"\n",
       "            ],\n",
       "            \"selectedMode\": \"multiple\",\n",
       "            \"show\": true,\n",
       "            \"left\": \"center\",\n",
       "            \"top\": \"top\",\n",
       "            \"orient\": \"horizontal\",\n",
       "            \"textStyle\": {\n",
       "                \"fontSize\": 12,\n",
       "                \"color\": \"#333\"\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"backgroundColor\": \"#fff\",\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"name\": \"\",\n",
       "            \"show\": true,\n",
       "            \"nameLocation\": \"middle\",\n",
       "            \"nameGap\": 25,\n",
       "            \"nameTextStyle\": {\n",
       "                \"fontSize\": 14\n",
       "            },\n",
       "            \"axisLabel\": {\n",
       "                \"interval\": \"auto\",\n",
       "                \"rotate\": 0,\n",
       "                \"margin\": 8,\n",
       "                \"textStyle\": {\n",
       "                    \"fontSize\": 12,\n",
       "                    \"color\": \"#000\"\n",
       "                }\n",
       "            },\n",
       "            \"axisTick\": {\n",
       "                \"alignWithLabel\": false\n",
       "            },\n",
       "            \"inverse\": false,\n",
       "            \"position\": null,\n",
       "            \"boundaryGap\": true,\n",
       "            \"min\": null,\n",
       "            \"max\": null,\n",
       "            \"type\": \"value\"\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"name\": \"\",\n",
       "            \"show\": true,\n",
       "            \"nameLocation\": \"middle\",\n",
       "            \"nameGap\": 25,\n",
       "            \"nameTextStyle\": {\n",
       "                \"fontSize\": 14\n",
       "            },\n",
       "            \"axisLabel\": {\n",
       "                \"formatter\": \"{value} \",\n",
       "                \"rotate\": 0,\n",
       "                \"interval\": \"auto\",\n",
       "                \"margin\": 8,\n",
       "                \"textStyle\": {\n",
       "                    \"fontSize\": 12,\n",
       "                    \"color\": \"#000\"\n",
       "                }\n",
       "            },\n",
       "            \"axisTick\": {\n",
       "                \"alignWithLabel\": false\n",
       "            },\n",
       "            \"inverse\": false,\n",
       "            \"position\": null,\n",
       "            \"boundaryGap\": true,\n",
       "            \"min\": null,\n",
       "            \"max\": null,\n",
       "            \"splitLine\": {\n",
       "                \"show\": true\n",
       "            },\n",
       "            \"data\": [\n",
       "                \"\\u676d\\u5dde\",\n",
       "                \"\\u5317\\u4eac\",\n",
       "                \"\\u6df1\\u5733\",\n",
       "                \"\\u4e0a\\u6d77\",\n",
       "                \"\\u5357\\u4eac\",\n",
       "                \"\\u5e7f\\u5dde\",\n",
       "                \"\\u6210\\u90fd\",\n",
       "                \"\\u897f\\u5b89\",\n",
       "                \"\\u91cd\\u5e86\",\n",
       "                \"\\u6b66\\u6c49\"\n",
       "            ],\n",
       "            \"type\": \"category\"\n",
       "        }\n",
       "    ],\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\",\n",
       "        \"#f6f5ec\"\n",
       "    ]\n",
       "};\n",
       "myChart_005d2fc2f70549da98fa0029ec6f487d.setOption(option_005d2fc2f70549da98fa0029ec6f487d);\n",
       "\n",
       "    });\n",
       "</script>\n"
      ],
      "text/plain": [
       "<pyecharts.charts.bar.Bar at 0x10b4de438>"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bar = pyecharts.Bar('北上广深杭等城市平均实习工资')\n",
    "bar.add('', top10_city.index, np.round(top10_city.values, 0), mark_point=[\"max\"], is_convert=True)\n",
    "bar"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 再看看这些城市实习薪资的分布怎么样"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x10b4d5da0>"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmkAAAJQCAYAAADVBPO3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4xLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvAOZPmwAAIABJREFUeJzs3XmMHG1i3/dvXV19X3OQM8Mh+a5s\nvcuVV1rZsnbFXeuALWEFR4Kt5ZZlRwmERN7AQWJHhmRAQYwgyQs7SIAVIsmWsZGiDaRIdoEvFMdY\nyVAkWLFkHfZKe798331vkjNDztn3XVX5o7qbPQevl3MUyd8HeFjV1dXdT/dwZn7zXGVEUYSIiIiI\nJIt51hUQERERkcMU0kREREQSSCFNREREJIEU0kREREQSSCFNREREJIEU0kREREQSSCFNREREJIEU\n0kREREQSSCFNREREJIHss67AMdFlE0RERORpYjzshGclpLG+vv7EzzE/P8/29vYx1Obpps9Bn8GE\nPoeYPgd9BhP6HGL6HJ7sM1heXn6k89TdKSIiIpJACmkiIiIiCaSQJiIiIpJACmkiIiIiCaSQJiIi\nIpJACmkiIiIiCaSQJiIiIpJACmkiIiIiCaSQJiIiIpJACmkiIiIiCaSQJiIiIpJACmkiIiIiCaSQ\nJiIiIpJACmkiIiIiCaSQJiIiIpJA9llXQORZF4YhvV6PdrtNu92m0+kwHA4ZDoeMRiNGoxGmaZJK\npXAcB8dxyGQyVCoVisUipqm/pUREnkcKaSLvQRRFdLtdarXatNTr9WlpNBo0xtt2p0MURe/pdSzT\npFwuU6lWWVpaYmVlZVpKpdIxvysREUkShTSRIwyHQzY3N9nZ2dlX9nZ32dvdY7e2R7/fP/S4tO1Q\ndNMU3TRLqTTvn18m77rknRQ5xyWfSpGxHRzLwjEtHMvCNkyCKGQYBgyCgGEQ0B4O2Ot12et12O12\n2Nlr8MVbt/m9/u9NX6tYKPDCCy9w+YUX4u3lyxQKhdP8mERE5AQppMlzq9/vs7m5yd27d7l79y5b\nW1tx2dxkb2+PcKb1ywDKmSzVdJYL6SzfvPIClXSGSjpLJZ2hPC5p2znROjf6PW41atxq1LjZ2OOt\nt9/ly1/+MpOazs/NcenyZS6Py6VLl8jlcidaJxERORkKafJMi6KIvb09NjY2uHPnDhsbG2xsbHB3\n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\namzVary5c5dmu3Xf9b1Mw8Cx4iss2KaFY5oEYcQwDBgEIwbjdbcOmp+b48I3vMC3jidUrK6ucv78\nebWQiYg8oxTSRB6DaZrTWY0vvPDCfc8Lw5Bms0mj0aDdbu8rnU6H0WjEaDRiOBwyHA6xLGvftRoz\nmQyVSoVKpUK1WqVcLuvC4iIizxmFNJETYJompVKJUql01lUREZGnlPpJRERERBJIIU1EREQkgRTS\nRERERBJIIU1EREQkgRTSRERERBJIIU1EREQkgRTSRERERBJIIU1EREQkgRTSRERERBJIIU1EREQk\ngRTSRERERBJIIU1EREQkgRTSRERERBJIIU1EREQkgRTSRERERBJIIU1EREQkgRTSRERERBJIIU1E\nREQkgRTSRERERBJIIU1EREQkgRTSRERERBJIIU1EREQkgRTSRERERBJIIU1EREQkgRTSRERERBJI\nIU1EREQkgRTSRERERBJIIU1EREQkgRTSRERERBJIIU1EREQkgRTSRERERBJIIU1EREQkgRTSRERE\nRBLIPusKiDztwjBkNBoRRdG0TFiWhWVZmKaJYRhnWEsREXnaKKTJcyeKIgaDAc1mk1arRavVotPp\n0Ol0aLfbdDodAPb29uj1enS7XQb9Hv3BgEG/z2AwYDgcMgoCgiBgJpM9kGmapBybVCp1r7gumUyW\nbDZLJpMhk8mQy+XI5/P7SrFYpFAoYJpq/BYReV4opMkzYzgcUqvV9pVGo0G9Xh9vazQbDVqtNsPR\n6L7PY5sGaccgbRu4doRrRWRsKFngZA1SBbDNuFimiW0YmCaY44ay2fayIIIwgiCMCCMYhSMGwYhB\n0GEYRPTb0K3D3sigO4LuMGIwOjr1GYZBPpelWCpRLlcol8uUSqXptlqtTvctyzrGT1ZERM6CQpo8\nFaIootFosLOzs6/s7u6yu7vD3u4uzVb70OMsE/KuSSEFBTfifN4gV4VcyiKfgmzKIJeCjANZxyDj\nQMo6227JURjRHkBnEG9bA2gNIpr9iGa/S7PfobF2h7W3oNELCQ9kOsMwKBbyVKpVqtU5KpUK1Wp1\n37ZcLmPb+vYXEUky/ZSWxGi322xvb7O1tbVvu721yc7O7qHWr4xjUs5A2Y1YqRqUly1KaSimjek2\n5/DUjQWzzbj+pfTD6x1GcZBr9CJqPaj3Iuq9iFqvTb3dYm3nFl/rRvQPtM4ZBhQKBaqV6jjMxeFt\n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\n22KxSKlYYu58hW8YB/fJ+miTNdJKpRKOc7ZdqyIiz6KTbl74UeBTnudNOj16MxMHIJ488DngJYDx\nLM6/AuB53jcCvwb8NQW0Z4PjOJw/f57z588feX+v19sf3sZXHdja2uSNjW36/cH+57MMypm4O7WS\nNihnxlcbcO9dcaDgnu7SF6dt0v04bQHrzbSA9SJqvTiAjQ6M6zJNk3KpSKU6x+UjLhlVqVQolUqc\nP39eXRoiImfkREOa7/u/APzCe3z468BV3/c1Des5kU6nuXDhAhcuXDh0XxRFdDodtre3D1y3M752\n59d3dqivNYmi/YOgDCDnmvGq/Kl4okMuBbnxNTtzzuFrd7qnvKbZwfc5CBiP6YpbwNr9iOaBtcma\nA4N6D9r9w92PtmVRKhWpVuf4hrm56eWeZoNYsVjUQrIiIgmX2IE648tEKaAJEHdr5nI5crkcly5d\nOvKcIAhoNBrUarXp2LhGo0Gj0aBer9No1LnZqNPcadN7wBIMhgFp28S1IW2Da8frfqWsuPUuZYFj\nxmvETYthYBr7n2Oy/EMQRePlI2AUwCCEYQCDIF7otjsy6AUGvWFEd3j/2YyWZVIsFCgWS8wvV/gz\n467HSRfkJIjl83kFMBGRZ0BiQ5rI47IsaxpUHmY0Gk1nqk6uqjC7NQyDvb09er0e3W6Xfr9Pfbxc\nyaAzYDAcxkucjAJGweihy5ZYZrxMg5NycFMOqdR41mLBpZK5d5mkTCZz6HJK+XyeYrFINpvVGDwR\nkeeIQpo8l2zbfuAM1sedXh6G4b51jSYma2iJiIg8LoU0kWMwu1CpiIjIcdBvFREREZEEUkgTERER\nSSCFNBEREZEEUkgTERERSSCFNBEREZEEUkgTERERSSCFNBEREZEEUkgTERERSSCFNBEREZEEUkgT\nERERSSCFNBEREZEEUkgTERERSSCFNBEREZEEUkgTERERSSCFNBEREZEEUkgTERERSSCFNBEREZEE\nUkgTERERSSCFNBEREZEEUkgTERERSSCFNBEREZEEUkgTERERSSCFNBEREZEEUkgTERERSSCFNBER\nEZEEUkgTERERSSCFNBEREZEEUkgTERERSSCFNBEREZEEUkgTERERSSCFNBEREZEEUkgTERERSSCF\nNBEREZEEUkgTERERSSCFNBEREZEEUkgTERERSSD7rCsg8riiKCIIAgaDAYPBgOFwSBAEjEYjwjAk\nCAKCICCKon2PATAMA9M0sSwLwzCwLAvLsnAcB9u2p9swDM/q7YmIiAAKaXIGwjCk3W7TarWmpd1u\n02636Xa7tNttOp0O3W6XbrdLrzcpPfr9AYPBcF8AOymObZNyU6RSDm7KxXXTZLJZ0un0tGQymWnJ\nZrPT7WxJpVIYhnHi9RURkWeLQpo8sSiK6PV6NBoNGo0G9Xp9ut9sNqelUa/RbLXodDo8KGO5KYNU\nyiDlRDh2XPIuVPJg22BbcbFmtpYJpgmGEW9NE6axyLi3iSIIo5ltGG+DYFxCCEMYBTAaDeMSwGgE\nwwHsdQxGI4PByGA4jBgOI4KHNLpZlkU2myGXzZLL58lmc+Rycclms4f2J+Eul8uRSqWO4SskIiJP\no1MNaZ7nfQtQ9H3/907zdeW96ff7h0LX/v0atVqNZrPJYDA88jnSrkHahbQbkXEjKuch7YLrQjo1\ns01BKgUpBwzj5FvJ3rtoXO4ZBTAYwGAIwyH0h/du9wcwGI7oD5oMBk26zbvUd036Q4PBIKI/ePB7\nte044GUzWbK5HNnsvRB3VCvepHVvdmvbtlryRESeQqfdktYCfhb4zoN3eJ73D4Av+77/r2eOmcDv\n+75/9fSq+OwaDofT7sV9LVyNBq1Waxy+6jSbTWq12gODVyYNGTeknIOlOeLbk+LG27QLppnkwHU8\nbAvsDGQzj/qIe01vYXgv2PUH41A32Q6hPxgxGMYBr9eGZs1gMDTpDyIGw4hHGTpnWSaum8J1XdLp\nNK6bGW/daUmlUtN9x3Gmx+bm5uj1ejiOQyqV2redLQqCIiLH78RDmud5nwL+U2A0PuR6nve74/00\n8I983/9/iJsn+uPH/Bvf97/H9/3Q87zuSdfxaRGGIb1eb1q63e507Fan05nuT8Z7dTodWq3m9Pb9\nQpdhQNo1x61dIYU0LFyaCVyZ/eErScHrj74AO7VHO3fSjWlbcXdoUs2V4SPfer97IyCI96K4e3Y4\njAPdpAyHMBzdOz4cBYxGXYajbny8B91W3G07CgxGAQxHEaNhRPgEX1rHtrFtC9u2sR0Hx7GxbQfH\ndsa34zA3maAxmbBx1HZy3sEye99R5x11v2VZmEn+gouI3MdptKSVgZ/3ff//esh5s/1I7QPHz1wU\nRbRaLYIgIAzDfWUymzAMQ0aj0fT2ZMbhbBkOhwyHw337s7MUB4MB/X6ffr9Hv9ej3+/T6/fp9/v3\nDVmzTANc18RNRaScCDcVUS3A8vy4mzF1r7sx4947ZhjBe/pcHicknYSdGgyHj9aCc+XKFa5du8b1\n69e5cePGCdfsvdupRSf+mRpGhONEOM6BO6LxN2J0RJk5fug8gGhIxJDRCEZD6AKODaUCDHoQhsZ4\nzJ8xsw9BEI33I4L39t/woUwW+HE5AAAgAElEQVQznslrWxaWbY+3FpY1G+gc7APHJkEvm80yGo2m\nx2bvM01zXxicvX/29mTfNM1pmdyezDSeHJ/MQj7q9mTfMIxD+w8rz6ooiqaTiSb7R92ePT6ZwX3U\n/Q8qvV6P3d3dx3rMw15vcvyo93Pwvvdi9ms/2T9qe/D/ylHHJn/w7O3tUa/XH/n/3uz/16Oe+37/\nXyfnzz7ufnV7Fp1GSAsA60EneJ73OeDfAP+R53nF8bH/EfhfH/CYTwGfAvB9/9gqez+/9mu/xu/8\nzu+c+Os4ziQ8RaRdKGahWox/2TnOeDveTx0sqbiV6L0GrmfdtWvXuHr1KlEU8dJLL511dZLJiCdY\nHNfPvP2tgtGB7WGT0BeEEM5M5AjDeH/29uyx6MB9QRBPCAmnx6PxH1XDQ88ZhhCOoNcfTxAZGdPJ\nIqNR3PoqIs+ParXCP/7H/zO2ffZzK0+jBhYP+KnseZ4FuMS/G/494I3v+jzjEHYU3/c/A3xmfPPE\nW9suXbp00i8BjLuqhtBoxb8lHcfAtow4lNkRth3i2HEoOxTUUuA6ccvYpDjOyXbt3b9b7nR87t/A\nna1HO/f69etEUcTLL798spV6QnNl+Kvfc9a1OD77AlVwOHDNHguPClvhA+5/wLFwptUuDCGMjAP3\njVvwgifr5hWRZ8u3fMuHsKwHti2dmtMIaXPAqw+4/zLwp8A54DeJr4LwI8DngE+edOUe1Uc/+lE+\n+tGPPvbjJt2hB7s7J12eB7s6J6U/7uKclP1j0To0Ol2643FpwUPWgHBTBq5rkE6FuKlo2sU5Gdyf\nnnR9jsedJeCPh0c2V4ZHzeg7m6/wT3/uFWwLzi+caLWeSPyeTk4wWVJkprVouh/cu3904FgQzOyH\ns8uWGASBEW+nx6PxfvTA5Vbei6O6Lm3Hxp50U6ZsXDseD3e/MWyz3ZVHHT94X7lcptPpHOruPKrr\n82B358Euz6e1a2Z+fp7t7e2zrsaZS8rncL8u0NP6/5WUz+FZdxq/jr8d+MX73en7/pvAP/A87zeA\n13zf/6rneT/i+34A/HPP837sFOp4YiY/pJ1Dg3+ORxRFDAaDfZMHJgvDThaFnZ3R2Wo12a43aTXb\nDEejI5/TcQwy6TjUZdLRvkkDsyWbPvtAd9YteadpdqmPwWSZj1G8nU4eGN2bOBBPIognBwxHBqPR\no88InWUY7JvJmUo5pJwUdjpFdjzTczIZ4OCVGw5OFrjfhICDEwoeNHHgLCYB6BeSJM3TGvbl8Zzo\nr1jP8z4MlHzf//pDzvtGYNf3/cnIeP3ve0SGYUyXTiiXH70JJooi+v3+oaU44jXPBmxubsZrodX2\n2LnToNXuHPk8k0CXcceBbibMTVrmJq10jn18Y52eRtF40dz+4N5aavuW3RgeXILDYDA06A8MBsPw\noYPqDcMg7aZIZ8ZXQ8hlKacz+66QcHDpjfstwTG5vbS0RK1W0y8EEZEzcNLtIAbw449w3k8DPzFz\newOm49WyJ1Cv555hGNNf2gsL+/v+jmo1GI1G0yB3cHHbSWnUa2zuNul0jl41xbKM8eK2EW4qnM40\nnV3M1k3tH1/n2HFrXRJWUAjDmaUtDrRYTVqz+pMFbadBzJgJWw8OWoYBmUw6vtpANs9cJbfvCgQH\ny+xitpOFa487TDmOo4AmInJGTjSk+b7/R4946id935821fi+/2PjbQBoIdsEsG2bSqVCpVJ56Lmj\n0ejQZaEm+5OFc1utuOv17k77vqFu/+sbpBxjfFmoCMuMsKxoelmoyaWgTOPe9lC2MIDZy0KF97bT\nsVTjweZBMOkmhFEQMRo92vIQcfh1p5d1mivn913m6ajLQE1KOp3Wel4iIjKViCHiswFNnn62bVOt\nVqlWq490/uSC67OL8U7G181OmJhMoNi/plyP4WDAaDhZq26yRl04Hlg7WYMo/seYWXtqUuIFWB0c\n1yHtONi2Qz6fxzCMabffZDt7uaXZi6zPXpZJLU8iInIcEhHS5PlmmiaFQoFCoXDWVZnSQHERETlr\n6lsRERERSSCFNBEREZEEUkgTERERSSCFNBEREZEEUkgTERERSSCFNBEREZEEUkgTERERSSCFNBER\nEZEEUkgTERERSSCFNBEREZEEUkgTERERSSCFNBEREZEEUkgTERERSSCFNBEREZEEUkgTERERSSCF\nNBEREZEEUkgTERERSSCFNBEREZEEUkgTERERSSCFNBEREZEEUkgTERERSSCFNBEREZEEUkgTERER\n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\nwsICi4uLnDt3jqWlJSqVykPr/LRJ+vfEadBnENPnENPn8GSfwfLyMtzvr+sZZxbSjplC2jF62j6H\n7e3taWibvcannYrHtOUWIDcXkZuLlwI5zuC2b1biXjwQvrtn0K0xbRmzLJOlpSVWVy9y4cIFVlZW\nWFpaolqtnlmYGY1GtNttOp0O3W6Xfr/PYDBgNBoRBAFRFGGaJuVymV6vRzqdJpPJkMvlyOfzz91F\n05+274mToM8gps8hps/hdEKaLpQnT735+Xk+9rGP8bGPfYwoitje3ub111/njTfe4I0332DjK+uE\nYfzHiO0YpEsRbjGK123LRfHFx934Sgemde/yS1EEURDPRhwN4nFiwy4M2gb9VtzV12vu7+orFPJc\nvLDK6l9YnY67WlpaStw1KW3bplQqUSqVHniefhCLiJydZP3mEHlChmFMZ5NevXoVgH6/z9raGjdv\n3mR9fZ319XXubt7hzju1aXh7HE7KYa5aZfVCfG3JpaUllpaWWF5eplAoPPwJREREHoFCmjzzXNfl\nfe97H+973/v2HQ/DcDpmq9Vq0e12GQ6HjEYj8vk8nU4H27ZJp9Nks1ny+TylUolMJqMZiSIicuIU\n0uS5ZZomlUqFSqVy6D5184mIyFl7tqZgiYiIiDwjFNJEREREEkghTURERCSBFNJEREREEkghTURE\nRCSBFNJEREREEkghTURERCSBFNJEREREEkghTURERCSBFNJEREREEkghTURERCSBFNJEREREEkgh\nTURERCSBFNJEREREEkghTURERCSBFNJEREREEkghTURERCSBFNJEREREEkghTURERCSBFNJERERE\nEkghTURERCSBFNJEREREEkghTURERCSBFNJEREREEkghTURERCSBFNJEREREEkghTURERCSBFNJE\nREREEkghTURERCSBFNJEREREEkghTURERCSBFNJEREREEsg+6wqIPM2iKKLZbLK9vc3Ozg61Wo1G\no0Gz2aTdbtPr9ej3+wxHI4IgAMAwDBzHIeU4pNNp0uk0uVyOfD5PqVSiVCpRqVSYm5sjn89jGMYZ\nv0sRETkLCmkijyCKIra3t1lbW2NtbY319XXWN9a5e3eTfq+3/2TTwEynwLWJHJPIMcE0wTImTwaD\nCDohxnaIMQyIekOiwejQ6zqpFAsL85w/d57FxUWWlpZYWlpieXmZTCZzCu9cRETOikKayAGj0Yi3\n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\ngg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10adaa390>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "top10_city_box = data_clean.loc[data_clean['city'].isin(top10_city.index),:]\n",
    "sns.violinplot(x ='salary', y ='city', data = top10_city_box)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 4.4 学历\n",
    "\n",
    "##### 4.4.1 数据挖掘、机器学习算法的学历要求\n",
    "- 先看看总体来说，需要什么学历的最多，发现需求的本科生数量是最多的，约占50%，紧接着是硕士，约占30%，博士是最少的"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "本科    435\n",
       "硕士    267\n",
       "不限    160\n",
       "大专     12\n",
       "博士      4\n",
       "Name: job_academic, dtype: int64"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "job_academic = data_clean['job_academic'].value_counts()\n",
    "job_academic"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts': '/nbextensions/echarts/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "    <div id=\"89e959372176419fbfb2b40d53ea4282\" style=\"width:800px;height:400px;\"></div>\n",
       "\n",
       "\n",
       "<script>\n",
       "    require(['echarts'], function(echarts) {\n",
       "        \n",
       "var myChart_89e959372176419fbfb2b40d53ea4282 = echarts.init(document.getElementById('89e959372176419fbfb2b40d53ea4282'), null, {renderer: 'canvas'});\n",
       "var option_89e959372176419fbfb2b40d53ea4282 = {\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u5b66\\u5386\\u8981\\u6c42\",\n",
       "            \"subtext\": \"\",\n",
       "            \"left\": \"auto\",\n",
       "            \"top\": \"auto\",\n",
       "            \"textStyle\": {\n",
       "                \"color\": \"#000\",\n",
       "                \"fontSize\": 18\n",
       "            },\n",
       "            \"subtextStyle\": {\n",
       "                \"color\": \"#aaa\",\n",
       "                \"fontSize\": 12\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"toolbox\": {\n",
       "        \"show\": true,\n",
       "        \"orient\": \"vertical\",\n",
       "        \"left\": \"95%\",\n",
       "        \"top\": \"center\",\n",
       "        \"feature\": {\n",
       "            \"saveAsImage\": {\n",
       "                \"show\": true,\n",
       "                \"title\": \"\\u4e0b\\u8f7d\\u56fe\\u7247\"\n",
       "            },\n",
       "            \"restore\": {\n",
       "                \"show\": true\n",
       "            },\n",
       "            \"dataView\": {\n",
       "                \"show\": true\n",
       "            }\n",
       "        }\n",
       "    },\n",
       "    \"series_id\": 4057822,\n",
       "    \"tooltip\": {\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"formatter\": null,\n",
       "        \"textStyle\": {\n",
       "            \"color\": \"#fff\",\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"backgroundColor\": \"rgba(50,50,50,0.7)\",\n",
       "        \"borderColor\": \"#333\",\n",
       "        \"borderWidth\": 0\n",
       "    },\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"pie\",\n",
       "            \"name\": \"\",\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"name\": \"\\u672c\\u79d1\",\n",
       "                    \"value\": 435.0\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u7855\\u58eb\",\n",
       "                    \"value\": 267.0\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u4e0d\\u9650\",\n",
       "                    \"value\": 160.0\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5927\\u4e13\",\n",
       "                    \"value\": 12.0\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u535a\\u58eb\",\n",
       "                    \"value\": 4.0\n",
       "                }\n",
       "            ],\n",
       "            \"radius\": [\n",
       "                \"0%\",\n",
       "                \"75%\"\n",
       "            ],\n",
       "            \"center\": [\n",
       "                \"50%\",\n",
       "                \"50%\"\n",
       "            ],\n",
       "            \"roseType\": null,\n",
       "            \"label\": {\n",
       "                \"normal\": {\n",
       "                    \"show\": false,\n",
       "                    \"position\": \"outside\",\n",
       "                    \"textStyle\": {\n",
       "                        \"color\": \"#000\",\n",
       "                        \"fontSize\": 12\n",
       "                    },\n",
       "                    \"formatter\": \"{b}: {d}%\"\n",
       "                },\n",
       "                \"emphasis\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": null,\n",
       "                    \"textStyle\": {\n",
       "                        \"color\": \"#fff\",\n",
       "                        \"fontSize\": 12\n",
       "                    }\n",
       "                }\n",
       "            },\n",
       "            \"seriesId\": 4057822\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u672c\\u79d1\",\n",
       "                \"\\u7855\\u58eb\",\n",
       "                \"\\u4e0d\\u9650\",\n",
       "                \"\\u5927\\u4e13\",\n",
       "                \"\\u535a\\u58eb\"\n",
       "            ],\n",
       "            \"selectedMode\": \"multiple\",\n",
       "            \"show\": true,\n",
       "            \"left\": \"center\",\n",
       "            \"top\": \"top\",\n",
       "            \"orient\": \"horizontal\",\n",
       "            \"textStyle\": {\n",
       "                \"fontSize\": 12,\n",
       "                \"color\": \"#333\"\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"backgroundColor\": \"#fff\",\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\",\n",
       "        \"#f6f5ec\"\n",
       "    ]\n",
       "};\n",
       "myChart_89e959372176419fbfb2b40d53ea4282.setOption(option_89e959372176419fbfb2b40d53ea4282);\n",
       "\n",
       "    });\n",
       "</script>\n"
      ],
      "text/plain": [
       "<pyecharts.charts.pie.Pie at 0x10b9d9ef0>"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pie = pyecharts.Pie(\"学历要求\")\n",
    "pie.add('', job_academic.index, job_academic.values)\n",
    "pie"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 4.4.2 学历与薪资\n",
    "- 再看看实习薪资和学历有什么关系。发现基本上是正相关的关系，博士最高，接着是硕士、本科、大专\n",
    "- 但是，本科和硕士的实习工资差别不大\n",
    "- 总体看起来实习工资都偏低一些（不知道大家的实习工资是多少呢？），就算是博士也不太高"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "job_academic\n",
       "大专    2165.000000\n",
       "不限    3570.525000\n",
       "本科    3622.266667\n",
       "硕士    3786.546816\n",
       "博士    4075.000000\n",
       "Name: salary, dtype: float64"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_clean.groupby(['job_academic'])['salary'].mean().sort_values()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x10b4de978>"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nrkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10ac4bfd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.boxplot(x=\"job_academic\", y=\"salary\", data=data_clean)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 4.4 行业\n",
    "- 有一个好奇是，在现在的各行各业中，哪些行业对数据挖掘、机器学习算法的实习生需求更多，还有哪些行业现在也正在应用机器学习算法\n",
    "- “industry”字段是前面还未处理的，先看看数据长什么样子，发现同一条记录可能对应着一个或者多个行业，格式为xxx/xxx或者xxx,xxx，或者xxx，xxx等\n",
    "- 字段存在一定的缺失值\n",
    "- 考虑把字段按照/,，分割，行业名称每出现一次，做一次记录，比如“计算机/互联网,金融”，既属于“计算机”行业、又属于“互联网”行业，也属于“金融行业”，因此这3个行业的记录加1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "443                 互联网\n",
       "826    快消,生物/医疗,计算机/互联网\n",
       "759             计算机/互联网\n",
       "420             计算机/互联网\n",
       "961             计算机/互联网\n",
       "Name: industry, dtype: object"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_clean['industry'].sample(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "industry = data_clean.industry.str.split('/|,|，', expand = True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这里需要解释一下：\n",
    "- 首先把上面split好的industry应用pandas的顶级方法value_counts，计算出每列不同行业的记录数\n",
    "- 然后把这几列的数据加起来，得到总数\n",
    "- 再取top15"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "industry_top15 = industry.apply(pd.value_counts).sum(axis = 1).nlargest(15)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts': '/nbextensions/echarts/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "    <div id=\"8abacaf8853948948a2a474f5d68f4b5\" style=\"width:800px;height:400px;\"></div>\n",
       "\n",
       "\n",
       "<script>\n",
       "    require(['echarts'], function(echarts) {\n",
       "        \n",
       "var myChart_8abacaf8853948948a2a474f5d68f4b5 = echarts.init(document.getElementById('8abacaf8853948948a2a474f5d68f4b5'), null, {renderer: 'canvas'});\n",
       "var option_8abacaf8853948948a2a474f5d68f4b5 = {\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u884c\\u4e1a\\u4e0e\\u804c\\u4f4d\\u6570\\u91cf\",\n",
       "            \"subtext\": \"\",\n",
       "            \"left\": \"auto\",\n",
       "            \"top\": \"auto\",\n",
       "            \"textStyle\": {\n",
       "                \"color\": \"#000\",\n",
       "                \"fontSize\": 18\n",
       "            },\n",
       "            \"subtextStyle\": {\n",
       "                \"color\": \"#aaa\",\n",
       "                \"fontSize\": 12\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"toolbox\": {\n",
       "        \"show\": true,\n",
       "        \"orient\": \"vertical\",\n",
       "        \"left\": \"95%\",\n",
       "        \"top\": \"center\",\n",
       "        \"feature\": {\n",
       "            \"saveAsImage\": {\n",
       "                \"show\": true,\n",
       "                \"title\": \"\\u4e0b\\u8f7d\\u56fe\\u7247\"\n",
       "            },\n",
       "            \"restore\": {\n",
       "                \"show\": true\n",
       "            },\n",
       "            \"dataView\": {\n",
       "                \"show\": true\n",
       "            }\n",
       "        }\n",
       "    },\n",
       "    \"series_id\": 811209,\n",
       "    \"tooltip\": {\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"formatter\": null,\n",
       "        \"textStyle\": {\n",
       "            \"color\": \"#fff\",\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"backgroundColor\": \"rgba(50,50,50,0.7)\",\n",
       "        \"borderColor\": \"#333\",\n",
       "        \"borderWidth\": 0\n",
       "    },\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\",\n",
       "            \"data\": [\n",
       "                670.0,\n",
       "                503.0,\n",
       "                63.0,\n",
       "                43.0,\n",
       "                42.0,\n",
       "                23.0,\n",
       "                21.0,\n",
       "                19.0,\n",
       "                18.0,\n",
       "                11.0,\n",
       "                11.0,\n",
       "                11.0,\n",
       "                10.0,\n",
       "                8.0,\n",
       "                7.0\n",
       "            ],\n",
       "            \"stack\": \"\",\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"label\": {\n",
       "                \"normal\": {\n",
       "                    \"show\": false,\n",
       "                    \"position\": \"top\",\n",
       "                    \"textStyle\": {\n",
       "                        \"color\": \"#000\",\n",
       "                        \"fontSize\": 12\n",
       "                    },\n",
       "                    \"formatter\": null\n",
       "                },\n",
       "                \"emphasis\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": null,\n",
       "                    \"textStyle\": {\n",
       "                        \"color\": \"#fff\",\n",
       "                        \"fontSize\": 12\n",
       "                    }\n",
       "                }\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"type\": \"max\",\n",
       "                        \"name\": \"Maximum\",\n",
       "                        \"valueDim\": null,\n",
       "                        \"symbol\": \"pin\",\n",
       "                        \"symbolSize\": 50,\n",
       "                        \"label\": {\n",
       "                            \"normal\": {\n",
       "                                \"textStyle\": {\n",
       "                                    \"color\": \"#fff\"\n",
       "                                }\n",
       "                            }\n",
       "                        }\n",
       "                    },\n",
       "                    {\n",
       "                        \"type\": \"min\",\n",
       "                        \"name\": \"Minimum\",\n",
       "                        \"valueDim\": null,\n",
       "                        \"symbol\": \"pin\",\n",
       "                        \"symbolSize\": 50,\n",
       "                        \"label\": {\n",
       "                            \"normal\": {\n",
       "                                \"textStyle\": {\n",
       "                                    \"color\": \"#fff\"\n",
       "                                }\n",
       "                            }\n",
       "                        }\n",
       "                    },\n",
       "                    {\n",
       "                        \"type\": \"average\",\n",
       "                        \"name\": \"mean-Value\",\n",
       "                        \"valueDim\": null,\n",
       "                        \"symbol\": \"pin\",\n",
       "                        \"symbolSize\": 50,\n",
       "                        \"label\": {\n",
       "                            \"normal\": {\n",
       "                                \"textStyle\": {\n",
       "                                    \"color\": \"#fff\"\n",
       "                                }\n",
       "                            }\n",
       "                        }\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"markLine\": {\n",
       "                \"data\": []\n",
       "            },\n",
       "            \"seriesId\": 811209\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\"\n",
       "            ],\n",
       "            \"selectedMode\": \"multiple\",\n",
       "            \"show\": true,\n",
       "            \"left\": \"center\",\n",
       "            \"top\": \"top\",\n",
       "            \"orient\": \"horizontal\",\n",
       "            \"textStyle\": {\n",
       "                \"fontSize\": 12,\n",
       "                \"color\": \"#333\"\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"backgroundColor\": \"#fff\",\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"name\": \"\",\n",
       "            \"show\": true,\n",
       "            \"nameLocation\": \"middle\",\n",
       "            \"nameGap\": 25,\n",
       "            \"nameTextStyle\": {\n",
       "                \"fontSize\": 14\n",
       "            },\n",
       "            \"axisLabel\": {\n",
       "                \"interval\": \"auto\",\n",
       "                \"rotate\": 45,\n",
       "                \"margin\": 8,\n",
       "                \"textStyle\": {\n",
       "                    \"fontSize\": 12,\n",
       "                    \"color\": \"#000\"\n",
       "                }\n",
       "            },\n",
       "            \"axisTick\": {\n",
       "                \"alignWithLabel\": false\n",
       "            },\n",
       "            \"inverse\": false,\n",
       "            \"position\": null,\n",
       "            \"boundaryGap\": true,\n",
       "            \"min\": null,\n",
       "            \"max\": null,\n",
       "            \"data\": [\n",
       "                \"\\u4e92\\u8054\\u7f51\",\n",
       "                \"\\u8ba1\\u7b97\\u673a\",\n",
       "                \"\\u91d1\\u878d\",\n",
       "                \"\\u901a\\u4fe1\",\n",
       "                \"\\u7535\\u5b50\",\n",
       "                \"\\u5176\\u4ed6\",\n",
       "                \"\\u4f01\\u4e1a\\u670d\\u52a1\",\n",
       "                \"\\u4fdd\\u9669\",\n",
       "                \"\\u4eba\\u5de5\\u667a\\u80fd\",\n",
       "                \"\\u673a\\u68b0\\u5236\\u9020\",\n",
       "                \"\\u79fb\\u52a8\\u4e92\\u8054\\u7f51\",\n",
       "                \"\\u8f6f\\u4ef6\",\n",
       "                \"\\u5236\\u9020\",\n",
       "                \"\\u533b\\u836f\",\n",
       "                \"\\u6559\\u80b2\\u57f9\\u8bad\"\n",
       "            ],\n",
       "            \"type\": \"category\"\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"name\": \"\",\n",
       "            \"show\": true,\n",
       "            \"nameLocation\": \"middle\",\n",
       "            \"nameGap\": 25,\n",
       "            \"nameTextStyle\": {\n",
       "                \"fontSize\": 14\n",
       "            },\n",
       "            \"axisLabel\": {\n",
       "                \"formatter\": \"{value} \",\n",
       "                \"rotate\": 0,\n",
       "                \"interval\": \"auto\",\n",
       "                \"margin\": 8,\n",
       "                \"textStyle\": {\n",
       "                    \"fontSize\": 12,\n",
       "                    \"color\": \"#000\"\n",
       "                }\n",
       "            },\n",
       "            \"axisTick\": {\n",
       "                \"alignWithLabel\": false\n",
       "            },\n",
       "            \"inverse\": false,\n",
       "            \"position\": null,\n",
       "            \"boundaryGap\": true,\n",
       "            \"min\": null,\n",
       "            \"max\": null,\n",
       "            \"splitLine\": {\n",
       "                \"show\": true\n",
       "            },\n",
       "            \"type\": \"value\"\n",
       "        }\n",
       "    ],\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\",\n",
       "        \"#f6f5ec\"\n",
       "    ]\n",
       "};\n",
       "myChart_8abacaf8853948948a2a474f5d68f4b5.setOption(option_8abacaf8853948948a2a474f5d68f4b5);\n",
       "\n",
       "    });\n",
       "</script>\n"
      ],
      "text/plain": [
       "<pyecharts.charts.bar.Bar at 0x10b417710>"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bar = pyecharts.Bar('行业与职位数量')\n",
    "bar.add('', industry_top15.index, industry_top15.values, \n",
    "        mark_point=[\"max\",\"min\",\"average\"], xaxis_rotate=45)\n",
    "bar"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由上可知：\n",
    "- 互联网和计算机行业对于这方面的实习生需求是最多的（这是当然）\n",
    "- 金融、通信、电子行业对于这方面的实习生需求在前五名，说明数据挖掘、机器学习算法在这些行业也得到了比较好的应用\n",
    "- 另外，一些传统行业比如说机械、制造，也对这方面的实习生有些许需求，说明传统行业也开始关注和探索新的技术\n",
    "- 医药行业和教育培训行业也对此有些许需求；其实医药行业对机器学习算法的探索已经很多了，教育培训呢，估计是机器学习最近几年的蓬勃发展也带动了教育培训的发展吧"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 4.5 公司\n",
    "有很多跟公司相关的字段，很好奇哪些公司现在招的实习生职位数量最多、公司规模如何、这些公司都是什么时候成立的、是不是最近几年新成立的公司占的比例比较大、哪些公司给的实习薪资高一些、哪些公司比较看重学历\n",
    "  \n",
    "##### 4.5.1 公司与职位数量、平均实习月薪\n",
    "- 看看招聘职位数量前15名的公司都有哪些。发现了很多耳熟能详的大公司，比如说百度、滴滴、爱奇艺、头条、京东等\n",
    "- 还有一些比较陌生的，比如中科龙智、华院数据、非白三维、恒润科技、驭势科技、Rokid A-Lab等，这些公司都值得去了解一下\n",
    "- 这些公司中，今日头条的平均实习月薪最高，6400.5元，非白三维这家公司的实习月薪也不错，5150元，比某度好多了哈哈哈"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>com_name</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>百度</th>\n",
       "      <td>21</td>\n",
       "      <td>3256.190476</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>滴滴出行</th>\n",
       "      <td>19</td>\n",
       "      <td>3614.736842</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>中科龙智</th>\n",
       "      <td>13</td>\n",
       "      <td>3000.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>爱奇艺</th>\n",
       "      <td>12</td>\n",
       "      <td>3983.166667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>今日头条</th>\n",
       "      <td>12</td>\n",
       "      <td>6400.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>京东金融</th>\n",
       "      <td>10</td>\n",
       "      <td>4845.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>非白三维</th>\n",
       "      <td>10</td>\n",
       "      <td>5150.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>华院数据</th>\n",
       "      <td>10</td>\n",
       "      <td>3290.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>恒润科技</th>\n",
       "      <td>9</td>\n",
       "      <td>1858.666667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>作业帮</th>\n",
       "      <td>9</td>\n",
       "      <td>3444.444444</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>三星电子中国研究院</th>\n",
       "      <td>8</td>\n",
       "      <td>2800.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>驭势科技</th>\n",
       "      <td>7</td>\n",
       "      <td>3582.857143</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>新浪微博</th>\n",
       "      <td>7</td>\n",
       "      <td>2626.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>网易</th>\n",
       "      <td>6</td>\n",
       "      <td>3716.666667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rokid A-Lab</th>\n",
       "      <td>6</td>\n",
       "      <td>4166.666667</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             count         mean\n",
       "com_name                       \n",
       "百度              21  3256.190476\n",
       "滴滴出行            19  3614.736842\n",
       "中科龙智            13  3000.000000\n",
       "爱奇艺             12  3983.166667\n",
       "今日头条            12  6400.500000\n",
       "京东金融            10  4845.000000\n",
       "非白三维            10  5150.000000\n",
       "华院数据            10  3290.000000\n",
       "恒润科技             9  1858.666667\n",
       "作业帮              9  3444.444444\n",
       "三星电子中国研究院        8  2800.000000\n",
       "驭势科技             7  3582.857143\n",
       "新浪微博             7  2626.000000\n",
       "网易               6  3716.666667\n",
       "Rokid A-Lab      6  4166.666667"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_clean.groupby('com_name').salary.agg(['count', 'mean']).sort_values(by='count', ascending = False)[:15]\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 4.5.2 公司规模与职位数量\n",
    "- 数据挖掘、机器学习的实习生的需求，是否是以大型企业为主导呢？\n",
    "- 发现并不是的，这方面的需求是以小中大型企业向下递减的，也间接说明了这个行业迅速发展的同时催生了很多中小企业吧"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "小型企业    355\n",
       "中型企业    283\n",
       "大型企业    234\n",
       "Name: num_employee, dtype: int64"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_clean['num_employee'].value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 4.5.3 公司规模与实习月薪\n",
    "- 我猜应该是大公司实习月薪高，小公司实习月薪低吧\n",
    "- 发现：我还是太天真了，结果刚好相反，小公司给的高，大公司给的低\n",
    "- 仔细想想好像也不无道理，大公司靠自己的名气吸引实习生，小公司没有名气，只能靠给更多的钱来吸引实习生了"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "num_employee\n",
       "中型企业    3633.823322\n",
       "大型企业    3497.136752\n",
       "小型企业    3748.304225\n",
       "Name: salary, dtype: float64"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_clean.groupby('num_employee')['salary'].mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 4.5.4 公司实习期长度\n",
    "- 发现大多数公司要求的是实习3个月和6个月，基本上都是实习三个月起\n",
    "- 平均实习期长度是五个半月"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3     289\n",
       "6     190\n",
       "4     113\n",
       "7      73\n",
       "5      67\n",
       "8      35\n",
       "10     34\n",
       "13     20\n",
       "12     17\n",
       "9      11\n",
       "11      8\n",
       "15      6\n",
       "16      4\n",
       "14      4\n",
       "2       3\n",
       "18      2\n",
       "17      1\n",
       "1       1\n",
       "Name: time_span, dtype: int64"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_clean['time_span'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5.5193621867881548"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_clean['time_span'].mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 4.5.5 企业成立时间\n",
    "刚好可以用企业成立时间验证一下猜想，也就是最近这个行业是否得到了迅速的成长，迅速成长的过程中，是否又催生了一大批的中小企业\n",
    "- 首先，因为计算的是企业的数量而不是职位的数量，所以要先drop掉重复的企业\n",
    "- 接着，把之前清理好的成立时间数据，再清理一下，以年做单位\n",
    "- 然后，以年分组计算数量，便得到每年新成立的公司数量\n",
    "- 发现：从2013年开始，公司呈现爆发式增长"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [],
   "source": [
    "est_date = data_clean.drop_duplicates(subset='com_name')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings('ignore')\n",
    "est_date['est_year'] = pd.DatetimeIndex(est_date['est_date']).year\n",
    "num_com_by_year = est_date.groupby('est_year')['com_name'].count()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts': '/nbextensions/echarts/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "    <div id=\"c006f1cdb6214b03a7965263836a8f5c\" style=\"width:800px;height:400px;\"></div>\n",
       "\n",
       "\n",
       "<script>\n",
       "    require(['echarts'], function(echarts) {\n",
       "        \n",
       "var myChart_c006f1cdb6214b03a7965263836a8f5c = echarts.init(document.getElementById('c006f1cdb6214b03a7965263836a8f5c'), null, {renderer: 'canvas'});\n",
       "var option_c006f1cdb6214b03a7965263836a8f5c = {\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u6bcf\\u5e74\\u65b0\\u6210\\u7acb\\u7684\\u516c\\u53f8\\u6570\\u91cf\\u53d8\\u5316\",\n",
       "            \"subtext\": \"\",\n",
       "            \"left\": \"auto\",\n",
       "            \"top\": \"auto\",\n",
       "            \"textStyle\": {\n",
       "                \"color\": \"#000\",\n",
       "                \"fontSize\": 18\n",
       "            },\n",
       "            \"subtextStyle\": {\n",
       "                \"color\": \"#aaa\",\n",
       "                \"fontSize\": 12\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"toolbox\": {\n",
       "        \"show\": true,\n",
       "        \"orient\": \"vertical\",\n",
       "        \"left\": \"95%\",\n",
       "        \"top\": \"center\",\n",
       "        \"feature\": {\n",
       "            \"saveAsImage\": {\n",
       "                \"show\": true,\n",
       "                \"title\": \"\\u4e0b\\u8f7d\\u56fe\\u7247\"\n",
       "            },\n",
       "            \"restore\": {\n",
       "                \"show\": true\n",
       "            },\n",
       "            \"dataView\": {\n",
       "                \"show\": true\n",
       "            }\n",
       "        }\n",
       "    },\n",
       "    \"series_id\": 2192030,\n",
       "    \"tooltip\": {\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"formatter\": null,\n",
       "        \"textStyle\": {\n",
       "            \"color\": \"#fff\",\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"backgroundColor\": \"rgba(50,50,50,0.7)\",\n",
       "        \"borderColor\": \"#333\",\n",
       "        \"borderWidth\": 0\n",
       "    },\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"line\",\n",
       "            \"name\": \"\",\n",
       "            \"symbol\": \"emptyCircle\",\n",
       "            \"symbolSize\": 4,\n",
       "            \"smooth\": false,\n",
       "            \"step\": false,\n",
       "            \"stack\": \"\",\n",
       "            \"showSymbol\": true,\n",
       "            \"data\": [\n",
       "                1.0,\n",
       "                1.0,\n",
       "                1.0,\n",
       "                3.0,\n",
       "                1.0,\n",
       "                6.0,\n",
       "                5.0,\n",
       "                2.0,\n",
       "                2.0,\n",
       "                3.0,\n",
       "                4.0,\n",
       "                9.0,\n",
       "                6.0,\n",
       "                4.0,\n",
       "                7.0,\n",
       "                7.0,\n",
       "                7.0,\n",
       "                14.0,\n",
       "                14.0,\n",
       "                18.0,\n",
       "                19.0,\n",
       "                12.0,\n",
       "                20.0,\n",
       "                15.0,\n",
       "                29.0,\n",
       "                47.0,\n",
       "                57.0,\n",
       "                57.0,\n",
       "                42.0,\n",
       "                2.0\n",
       "            ],\n",
       "            \"label\": {\n",
       "                \"normal\": {\n",
       "                    \"show\": false,\n",
       "                    \"position\": \"top\",\n",
       "                    \"textStyle\": {\n",
       "                        \"color\": \"#000\",\n",
       "                        \"fontSize\": 12\n",
       "                    },\n",
       "                    \"formatter\": null\n",
       "                },\n",
       "                \"emphasis\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": null,\n",
       "                    \"textStyle\": {\n",
       "                        \"color\": \"#fff\",\n",
       "                        \"fontSize\": 12\n",
       "                    }\n",
       "                }\n",
       "            },\n",
       "            \"lineStyle\": {\n",
       "                \"normal\": {\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\",\n",
       "                    \"color\": null\n",
       "                }\n",
       "            },\n",
       "            \"areaStyle\": {\n",
       "                \"opacity\": 0,\n",
       "                \"color\": null\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"data\": []\n",
       "            },\n",
       "            \"markLine\": {\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"type\": \"max\",\n",
       "                        \"name\": \"Maximum\",\n",
       "                        \"valueDim\": null\n",
       "                    },\n",
       "                    {\n",
       "                        \"type\": \"average\",\n",
       "                        \"name\": \"mean-Value\",\n",
       "                        \"valueDim\": null\n",
       "                    }\n",
       "                ],\n",
       "                \"symbolSize\": 10\n",
       "            },\n",
       "            \"seriesId\": 2192030\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\"\n",
       "            ],\n",
       "            \"selectedMode\": \"multiple\",\n",
       "            \"show\": true,\n",
       "            \"left\": \"center\",\n",
       "            \"top\": \"top\",\n",
       "            \"orient\": \"horizontal\",\n",
       "            \"textStyle\": {\n",
       "                \"fontSize\": 12,\n",
       "                \"color\": \"#333\"\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"backgroundColor\": \"#fff\",\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"name\": \"\",\n",
       "            \"show\": true,\n",
       "            \"nameLocation\": \"middle\",\n",
       "            \"nameGap\": 25,\n",
       "            \"nameTextStyle\": {\n",
       "                \"fontSize\": 14\n",
       "            },\n",
       "            \"axisLabel\": {\n",
       "                \"interval\": \"auto\",\n",
       "                \"rotate\": 0,\n",
       "                \"margin\": 8,\n",
       "                \"textStyle\": {\n",
       "                    \"fontSize\": 12,\n",
       "                    \"color\": \"#000\"\n",
       "                }\n",
       "            },\n",
       "            \"axisTick\": {\n",
       "                \"alignWithLabel\": false\n",
       "            },\n",
       "            \"inverse\": false,\n",
       "            \"position\": null,\n",
       "            \"boundaryGap\": true,\n",
       "            \"min\": null,\n",
       "            \"max\": null,\n",
       "            \"data\": [\n",
       "                1980.0,\n",
       "                1990.0,\n",
       "                1991.0,\n",
       "                1992.0,\n",
       "                1993.0,\n",
       "                1994.0,\n",
       "                1995.0,\n",
       "                1996.0,\n",
       "                1997.0,\n",
       "                1998.0,\n",
       "                1999.0,\n",
       "                2000.0,\n",
       "                2001.0,\n",
       "                2002.0,\n",
       "                2003.0,\n",
       "                2004.0,\n",
       "                2005.0,\n",
       "                2006.0,\n",
       "                2007.0,\n",
       "                2008.0,\n",
       "                2009.0,\n",
       "                2010.0,\n",
       "                2011.0,\n",
       "                2012.0,\n",
       "                2013.0,\n",
       "                2014.0,\n",
       "                2015.0,\n",
       "                2016.0,\n",
       "                2017.0,\n",
       "                2018.0\n",
       "            ],\n",
       "            \"type\": \"category\"\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"name\": \"\",\n",
       "            \"show\": true,\n",
       "            \"nameLocation\": \"middle\",\n",
       "            \"nameGap\": 25,\n",
       "            \"nameTextStyle\": {\n",
       "                \"fontSize\": 14\n",
       "            },\n",
       "            \"axisLabel\": {\n",
       "                \"formatter\": \"{value} \",\n",
       "                \"rotate\": 0,\n",
       "                \"interval\": \"auto\",\n",
       "                \"margin\": 8,\n",
       "                \"textStyle\": {\n",
       "                    \"fontSize\": 12,\n",
       "                    \"color\": \"#000\"\n",
       "                }\n",
       "            },\n",
       "            \"axisTick\": {\n",
       "                \"alignWithLabel\": false\n",
       "            },\n",
       "            \"inverse\": false,\n",
       "            \"position\": null,\n",
       "            \"boundaryGap\": true,\n",
       "            \"min\": null,\n",
       "            \"max\": null,\n",
       "            \"splitLine\": {\n",
       "                \"show\": true\n",
       "            },\n",
       "            \"type\": \"value\"\n",
       "        }\n",
       "    ],\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\",\n",
       "        \"#f6f5ec\"\n",
       "    ]\n",
       "};\n",
       "myChart_c006f1cdb6214b03a7965263836a8f5c.setOption(option_c006f1cdb6214b03a7965263836a8f5c);\n",
       "\n",
       "    });\n",
       "</script>\n"
      ],
      "text/plain": [
       "<pyecharts.charts.line.Line at 0x10bb30c50>"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "line = pyecharts.Line(\"每年新成立的公司数量变化\")\n",
    "line.add(\"\", num_com_by_year.index, num_com_by_year.values, mark_line=[\"max\", \"average\"])\n",
    "line"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "那新成立的企业中，企业规模怎么样？\n",
    "- 把数据以企业规模和成立年份分组计数\n",
    "- 发现2013年之后的爆发式增长中，主要以中小型企业为主（当然，这里也可以使用注册资本字段来做）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts': '/nbextensions/echarts/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "    <div id=\"778a9a8aebbe42b5b6db81b126d47ab4\" style=\"width:800px;height:400px;\"></div>\n",
       "\n",
       "\n",
       "<script>\n",
       "    require(['echarts'], function(echarts) {\n",
       "        \n",
       "var myChart_778a9a8aebbe42b5b6db81b126d47ab4 = echarts.init(document.getElementById('778a9a8aebbe42b5b6db81b126d47ab4'), null, {renderer: 'canvas'});\n",
       "var option_778a9a8aebbe42b5b6db81b126d47ab4 = {\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u65b0\\u6210\\u7acb\\u7684\\u4f01\\u4e1a\\u4e0e\\u89c4\\u6a21\",\n",
       "            \"subtext\": \"\",\n",
       "            \"left\": \"auto\",\n",
       "            \"top\": \"auto\",\n",
       "            \"textStyle\": {\n",
       "                \"color\": \"#000\",\n",
       "                \"fontSize\": 18\n",
       "            },\n",
       "            \"subtextStyle\": {\n",
       "                \"color\": \"#aaa\",\n",
       "                \"fontSize\": 12\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"toolbox\": {\n",
       "        \"show\": true,\n",
       "        \"orient\": \"vertical\",\n",
       "        \"left\": \"95%\",\n",
       "        \"top\": \"center\",\n",
       "        \"feature\": {\n",
       "            \"saveAsImage\": {\n",
       "                \"show\": true,\n",
       "                \"title\": \"\\u4e0b\\u8f7d\\u56fe\\u7247\"\n",
       "            },\n",
       "            \"restore\": {\n",
       "                \"show\": true\n",
       "            },\n",
       "            \"dataView\": {\n",
       "                \"show\": true\n",
       "            }\n",
       "        }\n",
       "    },\n",
       "    \"series_id\": 6244612,\n",
       "    \"tooltip\": {\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"formatter\": null,\n",
       "        \"textStyle\": {\n",
       "            \"color\": \"#fff\",\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"backgroundColor\": \"rgba(50,50,50,0.7)\",\n",
       "        \"borderColor\": \"#333\",\n",
       "        \"borderWidth\": 0\n",
       "    },\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"line\",\n",
       "            \"name\": \"\\u5c0f\\u578b\\u4f01\\u4e1a\",\n",
       "            \"symbol\": \"emptyCircle\",\n",
       "            \"symbolSize\": 4,\n",
       "            \"smooth\": false,\n",
       "            \"step\": false,\n",
       "            \"stack\": \"\",\n",
       "            \"showSymbol\": true,\n",
       "            \"data\": [\n",
       "                0.0,\n",
       "                0.0,\n",
       "                0.0,\n",
       "                0.0,\n",
       "                0.0,\n",
       "                0.0,\n",
       "                0.0,\n",
       "                1.0,\n",
       "                0.0,\n",
       "                0.0,\n",
       "                0.0,\n",
       "                0.0,\n",
       "                0.0,\n",
       "                1.0,\n",
       "                0.0,\n",
       "                3.0,\n",
       "                1.0,\n",
       "                1.0,\n",
       "                1.0,\n",
       "                4.0,\n",
       "                7.0,\n",
       "                2.0,\n",
       "                8.0,\n",
       "                4.0,\n",
       "                14.0,\n",
       "                26.0,\n",
       "                37.0,\n",
       "                40.0,\n",
       "                38.0,\n",
       "                2.0\n",
       "            ],\n",
       "            \"label\": {\n",
       "                \"normal\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"top\",\n",
       "                    \"textStyle\": {\n",
       "                        \"color\": \"#000\",\n",
       "                        \"fontSize\": 12\n",
       "                    },\n",
       "                    \"formatter\": null\n",
       "                },\n",
       "                \"emphasis\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": null,\n",
       "                    \"textStyle\": {\n",
       "                        \"color\": \"#fff\",\n",
       "                        \"fontSize\": 12\n",
       "                    }\n",
       "                }\n",
       "            },\n",
       "            \"lineStyle\": {\n",
       "                \"normal\": {\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\",\n",
       "                    \"color\": null\n",
       "                }\n",
       "            },\n",
       "            \"areaStyle\": {\n",
       "                \"opacity\": 0,\n",
       "                \"color\": null\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"data\": []\n",
       "            },\n",
       "            \"markLine\": {\n",
       "                \"data\": []\n",
       "            },\n",
       "            \"seriesId\": 6244612\n",
       "        },\n",
       "        {\n",
       "            \"type\": \"line\",\n",
       "            \"name\": \"\\u4e2d\\u578b\\u4f01\\u4e1a\",\n",
       "            \"symbol\": \"emptyCircle\",\n",
       "            \"symbolSize\": 4,\n",
       "            \"smooth\": false,\n",
       "            \"step\": false,\n",
       "            \"stack\": \"\",\n",
       "            \"showSymbol\": true,\n",
       "            \"data\": [\n",
       "                0.0,\n",
       "                0.0,\n",
       "                0.0,\n",
       "                0.0,\n",
       "                1.0,\n",
       "                2.0,\n",
       "                3.0,\n",
       "                1.0,\n",
       "                0.0,\n",
       "                1.0,\n",
       "                1.0,\n",
       "                6.0,\n",
       "                4.0,\n",
       "                1.0,\n",
       "                6.0,\n",
       "                2.0,\n",
       "                2.0,\n",
       "                4.0,\n",
       "                8.0,\n",
       "                8.0,\n",
       "                12.0,\n",
       "                6.0,\n",
       "                11.0,\n",
       "                8.0,\n",
       "                9.0,\n",
       "                18.0,\n",
       "                19.0,\n",
       "                15.0,\n",
       "                3.0,\n",
       "                0.0\n",
       "            ],\n",
       "            \"label\": {\n",
       "                \"normal\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"top\",\n",
       "                    \"textStyle\": {\n",
       "                        \"color\": \"#000\",\n",
       "                        \"fontSize\": 12\n",
       "                    },\n",
       "                    \"formatter\": null\n",
       "                },\n",
       "                \"emphasis\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": null,\n",
       "                    \"textStyle\": {\n",
       "                        \"color\": \"#fff\",\n",
       "                        \"fontSize\": 12\n",
       "                    }\n",
       "                }\n",
       "            },\n",
       "            \"lineStyle\": {\n",
       "                \"normal\": {\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\",\n",
       "                    \"color\": null\n",
       "                }\n",
       "            },\n",
       "            \"areaStyle\": {\n",
       "                \"opacity\": 0,\n",
       "                \"color\": null\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"data\": []\n",
       "            },\n",
       "            \"markLine\": {\n",
       "                \"data\": []\n",
       "            },\n",
       "            \"seriesId\": 6244612\n",
       "        },\n",
       "        {\n",
       "            \"type\": \"line\",\n",
       "            \"name\": \"\\u5927\\u578b\\u4f01\\u4e1a\",\n",
       "            \"symbol\": \"emptyCircle\",\n",
       "            \"symbolSize\": 4,\n",
       "            \"smooth\": false,\n",
       "            \"step\": false,\n",
       "            \"stack\": \"\",\n",
       "            \"showSymbol\": true,\n",
       "            \"data\": [\n",
       "                1.0,\n",
       "                1.0,\n",
       "                1.0,\n",
       "                3.0,\n",
       "                0.0,\n",
       "                4.0,\n",
       "                2.0,\n",
       "                0.0,\n",
       "                2.0,\n",
       "                1.0,\n",
       "                3.0,\n",
       "                3.0,\n",
       "                2.0,\n",
       "                2.0,\n",
       "                1.0,\n",
       "                2.0,\n",
       "                4.0,\n",
       "                9.0,\n",
       "                5.0,\n",
       "                6.0,\n",
       "                0.0,\n",
       "                4.0,\n",
       "                1.0,\n",
       "                3.0,\n",
       "                6.0,\n",
       "                2.0,\n",
       "                1.0,\n",
       "                2.0,\n",
       "                1.0,\n",
       "                0.0\n",
       "            ],\n",
       "            \"label\": {\n",
       "                \"normal\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"top\",\n",
       "                    \"textStyle\": {\n",
       "                        \"color\": \"#000\",\n",
       "                        \"fontSize\": 12\n",
       "                    },\n",
       "                    \"formatter\": null\n",
       "                },\n",
       "                \"emphasis\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": null,\n",
       "                    \"textStyle\": {\n",
       "                        \"color\": \"#fff\",\n",
       "                        \"fontSize\": 12\n",
       "                    }\n",
       "                }\n",
       "            },\n",
       "            \"lineStyle\": {\n",
       "                \"normal\": {\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\",\n",
       "                    \"color\": null\n",
       "                }\n",
       "            },\n",
       "            \"areaStyle\": {\n",
       "                \"opacity\": 0,\n",
       "                \"color\": null\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"data\": []\n",
       "            },\n",
       "            \"markLine\": {\n",
       "                \"data\": []\n",
       "            },\n",
       "            \"seriesId\": 6244612\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u5c0f\\u578b\\u4f01\\u4e1a\",\n",
       "                \"\\u4e2d\\u578b\\u4f01\\u4e1a\",\n",
       "                \"\\u5927\\u578b\\u4f01\\u4e1a\"\n",
       "            ],\n",
       "            \"selectedMode\": \"multiple\",\n",
       "            \"show\": true,\n",
       "            \"left\": \"center\",\n",
       "            \"top\": \"top\",\n",
       "            \"orient\": \"horizontal\",\n",
       "            \"textStyle\": {\n",
       "                \"fontSize\": 12,\n",
       "                \"color\": \"#333\"\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"backgroundColor\": \"#fff\",\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"name\": \"\",\n",
       "            \"show\": true,\n",
       "            \"nameLocation\": \"middle\",\n",
       "            \"nameGap\": 25,\n",
       "            \"nameTextStyle\": {\n",
       "                \"fontSize\": 14\n",
       "            },\n",
       "            \"axisLabel\": {\n",
       "                \"interval\": \"auto\",\n",
       "                \"rotate\": 0,\n",
       "                \"margin\": 8,\n",
       "                \"textStyle\": {\n",
       "                    \"fontSize\": 12,\n",
       "                    \"color\": \"#000\"\n",
       "                }\n",
       "            },\n",
       "            \"axisTick\": {\n",
       "                \"alignWithLabel\": false\n",
       "            },\n",
       "            \"inverse\": false,\n",
       "            \"position\": null,\n",
       "            \"boundaryGap\": true,\n",
       "            \"min\": null,\n",
       "            \"max\": null,\n",
       "            \"data\": [\n",
       "                1980.0,\n",
       "                1990.0,\n",
       "                1991.0,\n",
       "                1992.0,\n",
       "                1993.0,\n",
       "                1994.0,\n",
       "                1995.0,\n",
       "                1996.0,\n",
       "                1997.0,\n",
       "                1998.0,\n",
       "                1999.0,\n",
       "                2000.0,\n",
       "                2001.0,\n",
       "                2002.0,\n",
       "                2003.0,\n",
       "                2004.0,\n",
       "                2005.0,\n",
       "                2006.0,\n",
       "                2007.0,\n",
       "                2008.0,\n",
       "                2009.0,\n",
       "                2010.0,\n",
       "                2011.0,\n",
       "                2012.0,\n",
       "                2013.0,\n",
       "                2014.0,\n",
       "                2015.0,\n",
       "                2016.0,\n",
       "                2017.0,\n",
       "                2018.0\n",
       "            ],\n",
       "            \"type\": \"category\"\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"name\": \"\",\n",
       "            \"show\": true,\n",
       "            \"nameLocation\": \"middle\",\n",
       "            \"nameGap\": 25,\n",
       "            \"nameTextStyle\": {\n",
       "                \"fontSize\": 14\n",
       "            },\n",
       "            \"axisLabel\": {\n",
       "                \"formatter\": \"{value} \",\n",
       "                \"rotate\": 0,\n",
       "                \"interval\": \"auto\",\n",
       "                \"margin\": 8,\n",
       "                \"textStyle\": {\n",
       "                    \"fontSize\": 12,\n",
       "                    \"color\": \"#000\"\n",
       "                }\n",
       "            },\n",
       "            \"axisTick\": {\n",
       "                \"alignWithLabel\": false\n",
       "            },\n",
       "            \"inverse\": false,\n",
       "            \"position\": null,\n",
       "            \"boundaryGap\": true,\n",
       "            \"min\": null,\n",
       "            \"max\": null,\n",
       "            \"splitLine\": {\n",
       "                \"show\": true\n",
       "            },\n",
       "            \"type\": \"value\"\n",
       "        }\n",
       "    ],\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\",\n",
       "        \"#f6f5ec\"\n",
       "    ]\n",
       "};\n",
       "myChart_778a9a8aebbe42b5b6db81b126d47ab4.setOption(option_778a9a8aebbe42b5b6db81b126d47ab4);\n",
       "\n",
       "    });\n",
       "</script>\n"
      ],
      "text/plain": [
       "<pyecharts.charts.line.Line at 0x10bc4dac8>"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "scale_VS_year = est_date.groupby(['num_employee', 'est_year'])['com_name'].count()\n",
    "scale_VS_year_s = scale_VS_year['小型企业'].reindex(num_com_by_year.index, fill_value=0)\n",
    "scale_VS_year_m = scale_VS_year['中型企业'].reindex(num_com_by_year.index, fill_value=0)\n",
    "scale_VS_year_l = scale_VS_year['大型企业'].reindex(num_com_by_year.index, fill_value=0)\n",
    "\n",
    "line = pyecharts.Line(\"新成立的企业与规模\")\n",
    "line.add(\"小型企业\", scale_VS_year_s.index, scale_VS_year_s.values, is_label_show=True)\n",
    "line.add(\"中型企业\", scale_VS_year_m.index, scale_VS_year_m.values, is_label_show=True)\n",
    "line.add(\"大型企业\", scale_VS_year_l.index, scale_VS_year_l.values, is_label_show=True)\n",
    "line"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5. 给小E挑选实习公司\n",
    "从以上的数据分析我们可以知道：\n",
    "1. 数据挖掘、机器学习算法岗位实习生的招聘，主要集中在“北上广深杭”这5个大城市\n",
    "2. 实习生的平均薪资为3644元人民币，“北上广深杭”这五个城市中，杭州的薪资最高，再者是北京、深圳\n",
    "3. 实习生学习以本科和硕士居多，并且这两者在实习薪资待遇上并没有太大的差别\n",
    "4. 互联网和计算机行业对于数据挖掘、机器学习算法岗位实习生需求是最多的，再者是金融、通信、电子行业\n",
    "5. 百度、滴滴、爱奇艺、头条、京东等大公司对该岗位的需求很多，另外还有中科龙智、华院数据、非白三维、恒润科技、驭势科技、Rokid A-Lab这些比较陌生的公司，对于该岗位的需求很多（应该是公司这方面的业务出于快速发展阶段）\n",
    "6. 大公司的实习薪资较少，小公司的薪资较多，不过差别不大\n",
    "7. 实习期以3个月或者6个月为主\n",
    "8. 从2013年开始，该行业的迅速发展催生了很多新的公司，主要以中小企业为主\n",
    "\n",
    "  \n",
    "这便是实习僧网站上，国内“机器学习算法实习生”岗位的一些基本情况。下面还有一个任务就是，给小E挑选一些符合小E的公司，供小E投简历。\n",
    "小E的相关信息：\n",
    "- 深圳人\n",
    "- 硕士在读\n",
    "- 只能实习3个月\n",
    "- 薪资高于深圳平均实习薪资\n",
    "- 要求是最新发布的职位\n",
    "\n",
    "  \n",
    "最后剩下......鹅厂......\n",
    "那就鹅厂吧，把鹅厂的这3条记录提取出来，完事儿！"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['腾讯'], dtype=object)"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "E_data = data_clean.loc[(data_clean['city'] == '深圳') & \n",
    "               (data_clean['job_academic'] != '博士') & \n",
    "               (data_clean['time_span'].isin([1,2,3])) & \n",
    "               (data_clean['salary'] > 3784) & \n",
    "               (data_clean['released_time'] == 'newest'), :]\n",
    "E_data['com_name'].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>job_title</th>\n",
       "      <th>job_links</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>【2019届】数据挖掘机器学习算法工程师</td>\n",
       "      <td>https://www.shixiseng.com/intern/inn_btgg1xncafqz</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>【2019届】数据挖掘机器学习算法工程师</td>\n",
       "      <td>https://www.shixiseng.com/intern/inn_ybmp6yecb0ar</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>【2019届】大数据挖掘算法工程师</td>\n",
       "      <td>https://www.shixiseng.com/intern/inn_v29ipnaojqiw</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               job_title                                          job_links\n",
       "40  【2019届】数据挖掘机器学习算法工程师  https://www.shixiseng.com/intern/inn_btgg1xncafqz\n",
       "41  【2019届】数据挖掘机器学习算法工程师  https://www.shixiseng.com/intern/inn_ybmp6yecb0ar\n",
       "43     【2019届】大数据挖掘算法工程师  https://www.shixiseng.com/intern/inn_v29ipnaojqiw"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.loc[E_data.index, ['job_title', 'job_links']]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 6. logo拼图\n",
    "最后，一个小乐趣：数据中有\"com_logo\"（公司logo）的链接地址，可以下载回来然后做个公司logo拼图\n",
    "1. 首先，需要先按照“com_logo”字段的链接，把所有的logo图片下载回来\n",
    "- 先选取“com_logo”和“com_name”两列数据，按照“com_name”列去重，去缺失值\n",
    "- 由于我们要使用“com_name”字段来命名爬取回来的logo，而其有些记录带有\"/\"符号，跟路径的符号会起冲突，所以先把这个符号用“-”替换掉\n",
    "- 接着使用requests库批量下载这些logo图片，保存到“logo”文件夹中(注意：保存logo的这个目标文件夹需要自己先新建)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Successfully downloaded  459 logos!\n"
     ]
    }
   ],
   "source": [
    "import os\n",
    "import requests\n",
    "from PIL import Image\n",
    "\n",
    "data_logo = data_clean[['com_logo', 'com_name']]\n",
    "data_logo.drop_duplicates(subset='com_name', inplace=True)\n",
    "data_logo.dropna(inplace=True)\n",
    "data_logo['com_name'] = data_logo['com_name'].str.replace('/', '-')\n",
    "com_logo = list(data_logo['com_logo'])\n",
    "com_name = list(data_logo['com_name'])\n",
    "\n",
    "path_list = []\n",
    "num_logo = 0\n",
    "os.mkdir('/Users/apple/Desktop/shixiseng/logo')\n",
    "for logo_index in range(len(com_logo)):\n",
    "    try:\n",
    "        response = requests.get(com_logo[logo_index])\n",
    "        suffix = com_logo[logo_index].split('.')[-1]\n",
    "        path = '/Users/apple/Desktop/shixiseng/logo/{}.{}'.format(com_name[logo_index], suffix)\n",
    "        path_list.append(path)\n",
    "        with open(path, 'wb') as f:\n",
    "            f.write(response.content)\n",
    "        num_logo += 1\n",
    "    except:\n",
    "        print('Failed downloading logo of', com_name[logo_index])\n",
    "print('Successfully downloaded ', str(num_logo), 'logos!')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "下面使用PIL做一个logo拼图，由于爬取回来有459个logo，为了美观，这里只选取了位于前面的400个logo，长宽各20个"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = y = 0\n",
    "line = 20\n",
    "NewImage = Image.new('RGB', (128*line, 128*line))\n",
    "for item in path_list:\n",
    "    try:\n",
    "        img = Image.open(item)\n",
    "        img = img.resize((128, 128), Image.ANTIALIAS)\n",
    "        NewImage.paste(img, (x * 128, y * 128))\n",
    "        x += 1\n",
    "    except IOError:\n",
    "        print(\"第%d行,%d列文件读取失败！IOError:%s\" % (y, x, item))\n",
    "        x -= 1\n",
    "    if x == line:\n",
    "        x = 0\n",
    "        y += 1\n",
    "    if (x + line * y) == line * line:\n",
    "        break\n",
    "NewImage.save(\"/Users/apple/Desktop/shixiseng/logo.jpg\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "完事儿，回家，吃饭！"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 7. 总结一下\n",
    "- 首先，由于这篇文章的目的是给小E分析数据挖掘、机器学习算法实习生的需求情况，并且只爬了“实习僧”这一个网站，所以数据量比较小\n",
    "- 不过，数据的清洗和分析的套路还是差不多的\n",
    "- 由于前段时间了解到pyecharts这个画图神器，所以想在这里用一下。pyecharts画出来的图确实漂亮，不过总体感觉现在它跟pandas还是结合地不够好，用起来稍微有点繁琐，希望后面会越来越好越来越方便吧\n",
    "- 吃饭了，溜了溜了"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
